0

这是情况:

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

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

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

4

1 回答 1

0

得到我的答案:http: //youtrack.jetbrains.com/issue/IDEA-112978

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

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

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

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

于 2013-08-30T17:47:59.740 回答