如何在模块化Java项目中组织测试?

jac*_*ses 8 java maven java-platform-module-system java-9 junit5

我正在GitHub上创建模块化构建(使用module-info.java),但是当我将module-info.java添加到我想要模块化的模块时,不能执行任何测试......

我怎样才能做到这一点?

我使用以下版本:

  • junit.jupiter版本5.3.0(第一次使用版本5.2.0也不成功)
  • maven-compiler-plugin版本3.8.0(第一次使用版本3.7.0也没有成功)
  • maven-surefire-plugin 2.22.0版(第一次使用版本2.21.0也不成功)

失败测试的典型错误如下:

java.lang.reflect.InaccessibleObjectException:无法访问com.github.jactor.rises.commons.dto.UserDtoTest():模块jactor.rises.commons不会"打开com.github.jactor.rises.commons.dto"到未命名的模块@ 65e98b1c

Sor*_*ras 7

欢迎来到模块化世界的测试!

你想写哪种测试?

黑盒测试:创建一个仅测试项目(没有"src/main"目录)并声明"src/test/java/module-info.java"模块描述符.

白盒测试:从第1天起,您需要"混入"/合并/隐藏您的测试类到您的主类,反之亦然.在这里,您主要有两种方法来实现这一目标:

  • 在测试运行时"编译模块化主源"和"修补普通测试源",并使用一些额外的"JVM选项来攻击模块系统"来执行测试.
  • 在编译时"编译模块化测试源"和"修补模块化主源"以执行测试.

博客

https://sormuras.github.io/blog/2018-09-11-testing-in-the-modular-world

例子

背景和其他资源

  • 这是超级级别的描述.我很确定这些例子在未来几天会有很好的点击率.感谢您回答这些例子. (2认同)