【问题标题】:Use class from test scope in other module [duplicate]在其他模块中使用测试范围中的类[重复]
【发布时间】:2015-09-10 13:56:17
【问题描述】:

我有一个模块作为框架的一部分,它为其他模块提供通用功能。我创建了一个类 (UtilitiesForTesting),它提供了一些仅在我的测试中使用的工具,因此它存储在模块的测试部分中。

模块结构如下:

project
    -src
       -main
         -java
           -com
             -company
               -product
                 +Foo
       -test
         -java
           -com
             -company
               -product
                 +FooTest
               -utility
                 +UtilitiesForTesting

UtilitiesForTesting 类在项目中可见,但是当我编译它时,生成的 jar 不包含任何测试类。

现在我想在其他模块中使用这些模块,因为我需要这个通用功能,但我也想使用测试工具。

我不想将 UtilitiesForTesting 放在 /main 部分,因为我不想允许在生产代码中使用这个类,只能在测试中使用。

我只想有一个模块,它为其他模块提供生产类并为同一模块提供测试实用程序,但限制使用 /main 部分中的测试实用程序。

有没有办法在其他模块中使用一个模块的测试范围的类?

【问题讨论】:

  • 您始终可以将其导出到只包含测试工具的外部库,只需在两个模块/应用程序/项目中添加对该库的依赖即可。
  • 是的,但是通过这种方式,这个模块可以被其他模块以“编译”范围导入并使用它的生产代码。我想限制仅用于测试。
  • 然后 other 模块可以导入实际测试范围。此示例不是适用于导​​入的“测试范围”;它正在处理测试类路径。
  • 具体来说,请查看 flicken 在重复问题中的答案:stackoverflow.com/a/174670/423991,这应该可以解决您的问题。
  • 感谢您指出我之前回答的问题。

标签: java maven testing scope


【解决方案1】:

在您的 pom.xml 中,在 maven-jar-plugin 下,添加以下目标。

`test-jar&gt`

src/test/java 下的所有文件都被编译并捆绑到 artifact-test.jar 中。

在另一个模块中,如果你想使用这个 artifact-test jar,在依赖标签中使用下面的配置。

`artifactid测试罐'

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2017-01-21
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2021-09-12
    • 1970-01-01
    • 2023-03-28
    • 1970-01-01
    相关资源
    最近更新 更多