java - Eclipse + m2e + junit5 - 已经可能了吗?

标签 java eclipse m2e junit5 java-11

尝试获取 Eclipse 2018-09 + 具有 Java 11 支持、m2ejunit5 的补丁一起。

按照 junit5-modular-world 中的建议 示例我在 test/java 下引入了第二个 module-info.java

Eclipse 的 react 令我惊讶:

更改后我无法保存该文件。 只有完全关闭 Eclipse 才能保存它。 然而,重新打开Eclipse,却一头雾水。它无法显示托管多个 module-info.java 的项目的任何详细信息,仅显示项目名称。

可能 Eclipse 使用一个 Java 模块来标识一个项目,而 mvn test 编译并执行的模块显然与 mvn install 创建的模块不同。

经历了很多我能想到的选择。目前我不得不放弃并回退到 junit 4.12。

你知道更好的解决方案吗?

最佳答案

Eclipse 目前不支持测试源文件夹中的辅助 module-info.java(但如果您尝试这样做,其行为可能应该得到改进)。

目前,您可能根本不需要它:

Maven 将 module-info.java 中提到的依赖项放在模块路径上,将所有其他依赖项(例如像 junit 这样的仅测试依赖项)放在类路径上,因此它们成为未命名模块的一部分。编译测试时,会添加命令行选项,因此主源文件夹中被视为模块一部分的测试代码仍然可以读取未命名的模块(通过添加 --add-reads modulename=ALL-UNNAMED ),因此 junit 对测试代码可见。

Eclipse Photon 及更高版本也支持此行为。

有关辅助测试 module-info.java 的一些背景:maven-compiler-plugin 从版本 3.8 开始支持此功能(请参阅 https://www.mail-archive.com/announce@maven.apache.org/msg00866.html ,在问题 https://issues.apache.org/jira/browse/MCOMPILER-341 中实现),但我不知道匹配的 maven-surefire-plugin 已经发布,所以我认为您目前无法使用 maven 运行此类测试。

在 Eclipse 中实现对辅助测试 module-info.java 的支持是可能的,只要它是主要 module-info.java 的严格超集即可> 在主源文件夹中,或者只要它们指定相同的模块,它们的内容就会像“pro”构建工具中那样合并 https://github.com/forax/pro 。但目前还没有人致力于此。

Eclipse 可能永远不会支持二次测试 module-info.java 来指定不同的模块,因为 Eclipse 假设一个 java 项目只属于一个模块。但这并不重要,因为这些测试只能使用主要源代码的公共(public)和导出代码,因此可以简单地将它们放入自己的 Maven 模块中。

关于java - Eclipse + m2e + junit5 - 已经可能了吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52804620/

相关文章:

java - 以编程方式启动 M2E Maven 命令

java - Maven 依赖项未复制到 Eclipse 中的 WEB-INF/lib

java - 明确转换: java时发生未知错误

eclipse - m2e 不支持 maven-dependency-plugin (目标 "copy-dependencies"、 "unpack")

java - 删除文本中的一行,如果

Java 应用程序将图像保存在项目文件夹而不是 Eclipse 文件夹中

java - 如何将所有控制台输出重定向到 GUI 文本框?

java - 用于查找工作区 Artifact 的 Maven settings.xml 配置

java - 当我在 mongodb 中手动设置 _id 时,@CreatedDate 不起作用

从类型到类的 Java 泛型