模块系统无法区分生产代码和测试代码,因此,如果您选择模块化测试代码,则
prod.module和
test.module不能共享相同的包
com.acme.project,如规格中所述:
互不干扰
-Java编译器,虚拟机和运行时系统必须确保包含相同名称的程序包的模块不会相互干扰。如果两个不同的模块包含相同名称的程序包,则从每个模块的角度来看,该程序包中的所有类型和成员都仅由该模块定义。一个模块中该程序包中的代码必须不能访问另一模块中该程序包中的程序包专用类型或成员。
正如艾伦·贝特曼(Alan Bateman)所指出的那样,当在src / test / java树中编译代码时,Maven编译器插件使用--patch-
module和模块系统提供的其他选项,以便使用测试类扩展被测模块。而且,在运行测试类时,Surefire插件也可以完成此操作(请参阅“
支持在命名的Java
9模块中运行单元测试”)。这意味着您无需将测试代码放在模块中。



