在Intellij中,一个模块可能依赖于另一个模块的测试

sga*_*gan 12 unit-testing module intellij-idea

我在Intellij中有一个多模块项目,我在一个子模块的测试源中有一堆黄瓜装置,我想在另一个子模块中重用.如果我添加另一个模块,作为依赖项,那么它的正常ouptut目录将添加到junit类路径但不会添加到其测试输出中.

是否有可能让intellij还导出模块测试目录并允许其他模块使用它们?

小智 5

是的,你可以,但这并不简单。

所以你有Module-AModule-B

Module-B有一个TestClass可能扩展 AbstractClass 或使用Module-A 的一些静态助手

注意:这仅适用于 intellij,如果您使用的是 maven 或 gradle,则需要检查这是否仍然可以构建。

这是您需要做的。

  1. 转到项目结构... (Ctrl+Alt+Shift+S - win/linux)
  2. 转到 Modules 并查看Module-A路径选项卡
  3. 记下测试输出路径或复制它。它可能是这样的:C:\dev\projects\myProject\moduleA\build\testclasses或类似的。
  4. 转到 Modules 并选择Module-B并查看其依赖项选项卡。
  5. 您可能已经在此处依赖模块 A进行编译,没关系。单击+或键入(Alt+Insert)并添加新库(选项上的第 2 项)
  6. 在选择库屏幕上选择新建库...按钮。选择Java选项。
  7. 在弹出的对话框中,转到上面的 build 文件夹,C:\dev\projects\myProject\moduleA\build\testclasses然后单击OK。您现在在此处拥有模块 A的课程。将其命名为合适的名称并将Level选项Module-A Tests更改为Module Library
  8. 单击+按钮也(Alt+Insert)可以添加源。导航到测试 src 文件。EG:C:\dev\projects\myProject\moduleA\src\test并添加这个,你现在也将添加一个 Sources 。
    1. 单击“确定”,您将返回“项目结构”对话框。
    2. 现在您将有一个新的库添加到您的依赖项中。更改要测试范围
    3. 按底部的确定就完成了。您可能需要制作/清理项目。

现在你有了模块之间链接的测试依赖。

如果您能想到更好的解决方案,请告诉我,但这是我找到的最简单的方法。


ian*_*man 1

也许吧,但你应该通过自动构建(即在 Maven 中)而不是 IDE 中来完成此操作。如果您将 Maven 模块的测试作为单独的依赖项发布(我就是这么做的),您可以将测试 jar 添加为其他模块的 dep。IDEA 当然会自动处理这个问题。

http://maven.apache.org/guides/mini/guide-attached-tests.html