13

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

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

4

2 回答 2

5

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

所以你有Module-AModule-B

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

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

这是您需要做的。

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

现在您已经在模块之间链接了测试依赖项。

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

于 2015-10-01T03:58:51.760 回答
1

也许,但你应该通过你的自动构建来做到这一点,即在 Maven 中,而不是你的 IDE。如果您将 maven 模块的测试作为单独的依赖项发布(我会这样做),则可以将测试 jar 添加为另一个模块的 dep。IDEA 当然会自动处理这个问题。

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

于 2012-06-12T19:22:30.740 回答