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

时间:2018-08-31 06:54:17

标签: java maven java-9 junit5 jigsaw

我正在GitHub上创建模块化构建(使用module-info.java),但是当将module-info.java添加到我想要模块化的模块时,无法执行测试... < / p>

我该如何实现?

我正在使用以下版本:

  • 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

1 个答案:

答案 0 :(得分:6)

欢迎使用在模块化世界中进行测试

您要编写哪种测试?

黑盒测试:创建仅测试项目(无“ src / main”目录),并声明“ src / test / java / module-info.java”模块描述符。< / p>

白盒测试:从第1天开始,您需要将测试类“融合” /合并/阴影到主类中,反之亦然。在这里,主要有两种方法可以实现此目的:

  • 在测试运行时“编译模块化主要源代码”和“修补普通测试源代码”,以及一些额外的“ JVM选项入侵模块系统”以执行测试。
  • 在编译时“编译模块化测试源”和“修补模块化主要源”以执行测试。

博客

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

示例

背景和其他资源