【发布时间】: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,这应该可以解决您的问题。
-
感谢您指出我之前回答的问题。