如何告诉文件junit没有定义任何模块,它应该在兼容模式下运行?
您的问题似乎是基于几个误解:
- 您无法
module-info.java
判断 JUnit 是否定义了模块。如果一个模块说它需要另一个模块,那么编译器期望该模块存在 - 没有办法解决这个问题。
- JUnit 4 是否以模块的形式出现并不太重要——只要将它放在模块路径上,它最终就会被视为一个模块(可能是一个自动模块)。
- 没有“兼容模式”。您可以继续编写代码,就像在模块系统之前所做的那样(几乎),但是一旦您创建了模块声明,您就需要遵守它的规则。
我建议彻底阅读《模块系统的杰出状态》,然后问问自己到底要完成什么。你真的想创建一个依赖于 JUnit 的模块吗?或者这只是偶然的,因为您使用它的 API 进行测试。如果是后者,你不应该依赖它——相反,你的 IDE / 构建工具需要弄清楚如何编译和运行你的测试。
“依赖于 JUnit 的模块”的扩展
模块系统不会将依赖项分类为“编译”或“测试”——如果一个模块是requires
另一个模块,它必须始终存在。这意味着requires junit
将强制存在 JUnit 的模块。除非该模块提供与测试相关的功能,否则这肯定是错误的。
换句话说,requires junit
类似于将 JUnit 添加到项目的 POM 中,使用compile
scope。