Eclipse运行JUnit测试忽略模块路径仅使用类路径的方法
Eclipse 实现JUnit测试走类路径、忽略模块路径的配置方案
以下方案和Maven Surefire插件useModulePath=false、IntelliJ "Do not use --module-path option" 效果完全一致,可按需选择:
方案1:临时单测试配置(推荐,不影响项目原有JPMS配置)
- 右键点击要运行的测试类,选择
Run As > Run Configurations - 找到对应JUnit运行配置,切换到Arguments标签页
- 在
VM arguments输入框中追加启动参数:
--class-path "${project_classpath:${selected_resource_name}}"
- 点击
Run即可,该配置仅对当前运行条目生效,不会修改主代码的模块路径校验规则。
方案2:新版Eclipse原生全局配置(适用于2022-09及更高版本)
- 打开顶部菜单
Window > Preferences(macOS系统为Eclipse > Settings) - 依次进入
Java > Compiler > Building配置页 - 找到Module settings分组下的
For test sources, don't use module path when launching选项,勾选后保存 - 配置生效后,所有存放在
src/test/java目录下的测试代码运行时,Eclipse会自动将依赖放入类路径加载,完全遵循Maven标准目录的测试隔离逻辑。
方案3:项目级构建路径修改(适用于需要长期关闭测试模块路径的场景)
- 右键点击项目根目录,选择
Properties - 进入
Java Build Path配置页,切换到Libraries标签 - 展开
Modulepath分组,选中所有依赖条目(含JRE、Maven依赖、测试依赖),点击右侧Remove - 选中
Classpath分组,点击Add Library,将刚才移除的所有依赖重新添加到类路径下 - 点击
Apply and Close保存即可,后续所有代码运行默认走类路径。
注意:该方案会修改项目全局构建路径,会导致主代码的JPMS模块校验失效,仅建议测试阶段临时使用,正式构建前请恢复原有模块路径配置。
常见问题说明
如果项目主代码根目录存在module-info.java文件,Eclipse默认会将主代码识别为命名模块,默认运行测试时会强制走模块路径,此时优先选择方案1或方案2,不需要修改module-info.java添加测试相关的依赖声明,就能解决模块缺失、包不可见的报错。
内容的提问来源于stack exchange,提问作者Andrea Del Bene
相关产品推荐
相关产品推荐

