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

时间:2013-08-30 15:58:27

标签: maven testing intellij-idea

情况如下:

我有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>

将范围设置为提供而不是测试将解决我的问题,但它允许主代码使用测试代码。

我可能错过了什么?这是一个错误吗?

1 个答案:

答案 0 :(得分:0)

我的回答是:http://youtrack.jetbrains.com/issue/IDEA-112978

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

对我来说,132.46有以下帮助: 1.打开“运行配置”对话框,默认部分。 2.找到相应的模板。我试过JUnit。 3.“测试种类”组合,选择All in package。 4.设置“在单个模块中”。 5.单击“应用”以保存模板。

之后删除创建的配置并重复“运行所有测试”。它为我选择了当前模块中的类。

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