情况如下:
我有2个模块,模块KID取决于模块PARENT。 我在PARENT中有一个测试类,可以在KID中用来测试类的实现。
为此,我添加了以下依赖项:
<dependency>
<groupId>myGroup</groupId>
<artifactId>PARENT</artifactId>
<version>${project.version}</version>
<type>test-jar</type>
<scope>test</scope>
</dependency>
使用maven,测试运行正常。
使用Intellij,(右键单击java测试文件夹+运行KID的'所有测试'),我得到一个NoClassDefFoundError。问题是两个模块的测试都在运行,但它只使用了孩子的依赖关系。
在PARENT项目中,我有一个我在KID中不需要的依赖项:
<dependency>
<groupId>commons-codec</groupId>
<artifactId>commons-codec</artifactId>
<version>1.8</version>
<scope>provided</scope>
</dependency>
将范围设置为提供而不是测试将解决我的问题,但它允许主代码使用测试代码。
我可能错过了什么?这是一个错误吗?
答案 0 :(得分:0)
我的回答是:http://youtrack.jetbrains.com/issue/IDEA-112978
那是因为运行配置是由模板创建的。 该模板具有默认设置,可以跨模块依赖项选择类。
对我来说,132.46有以下帮助: 1.打开“运行配置”对话框,默认部分。 2.找到相应的模板。我试过JUnit。 3.“测试种类”组合,选择All in package。 4.设置“在单个模块中”。 5.单击“应用”以保存模板。
之后删除创建的配置并重复“运行所有测试”。它为我选择了当前模块中的类。
IDEA的可能改进是专门为基于Maven的项目修改这些默认值。相当具体的变化......