【发布时间】:2018-05-19 15:27:16
【问题描述】:
我想在 Eclipse 中使用 JUnit 5 在 Java 9 模块化项目上运行测试,没有 Maven、Gradle 或所有花哨的东西。所以我有src/main/java module-info.java 和模块包所在的路径,还有src/test/java 所有测试类所在的路径。在 Jigsaw 模块系统之前,一切照旧。我有 Eclipse Oxygen.3a (4.7.3a) 和 Java 10.0.1。
我看过一些来自 Eclipse 的视频,展示了如何将 JUnit 测试添加到模块化项目中,但这让我大吃一惊:他们将 required 关键字放入模块的 module-info.java 中,将其绑定到 JUnit 模块。这真的是正确的吗?
我也见过所有这些--patch-module/--add-reads 解决方案(当我们谈论在控制台中工作时),这似乎是正确的方法,但我不知道如何在 Eclipse 没有将被测模块绑定到 JUnit 模块中实现这一点。这在 Eclipse 中是否可行(没有 Maven 和 s.o)?
【问题讨论】:
-
Till Brychcy 在以下答案中很好地解释了这一点:stackoverflow.com/a/50324391/6505250 和 stackoverflow.com/a/50408329/6505250(问题是 JUnit
-
所以看起来,在 Oxygen 中是不可能的,但 Photon 可能实际上可以处理它。那我试试看,谢谢指点!
-
如果您将 JUnit >= 5.0.2 JAR 添加到 Java 构建路径,它也适用于 Oxygen。但最好使用 Photon,它也有 classpath 分离 main vs. test。
-
Oxygen 中的 JUnit 有 5.0.0 版本标签,我不想弄乱它。我和光子一起去了。实际上,在构建路径设置中,可以标记给定的源文件夹是否是测试文件夹,并且有必要为测试和非测试类设置单独的文件夹(需要在 Java Build Path 的 Source 选项卡中选中 Allow output folder for source folder ) 并且我现在可以运行 JUnit 测试(而且看起来很明显,JUnit 库必须放在类路径中,而不是模块路径中)。所以它适用于光子。我可能不会在 Oxygen 中调整 JUnit 版本,但也许有人会尝试。再次感谢!