如何在具有测试依赖性的maven项目中测试intellij中的单个测试模块



情况如下:

我有两个模块,模块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的"All tests"),我会得到一个NoClassDefFoundError。问题是,来自两个模块的测试都在运行,但它只使用了孩子的依赖项。

在项目PARENT中,我有一个在KID:中不需要的依赖项

    <dependency>
        <groupId>commons-codec</groupId>
        <artifactId>commons-codec</artifactId>
        <version>1.8</version>
        <scope>provided</scope>
    </dependency>

将作用域设置为provided而不是test将解决我的问题,但它允许主代码使用测试代码。

我可能错过了什么?这是个bug?

我在那里得到了答案:http://youtrack.jetbrains.com/issue/IDEA-112978

这是因为运行配置是由模板创建的。该模板具有默认设置,可以跨模块依赖项选择类。

对132.46中的我来说,以下内容有所帮助:1.打开"运行配置"对话框的"默认值"部分。2.找到各自的模板。我试过JUnit。3."测试种类"组合框,选择All in package。4.设置"在单个模块中"。5.申请保存模板。

之后删除创建的配置并重复"运行所有测试"。它只为我从当前模块中挑选类

IDEA中可能的改进是专门为基于Maven的项目修改这些默认值。相当具体的变化。。。

最新更新