假设这些工具用于在maven项目中运行测试: org.apache.maven.plugins:maven-surefire-plugin:3.0.0-M5
使用默认配置 org.junit.jupiter:junit-jupiter-engine:5.7.0
请在这里找到最简单的例子。
该项目由一个java模块组成( java 11
, maven 3.6.1
).
使用此设置,典型的成功测试如下所示:
public class SampleTest {
@Test
public void test() {
assertEquals(1, 1);
}
}
我想避免使用 public
对于所有的测试方法和测试类,因为它只会产生视觉噪音。不幸的是,在移除 public
可见性测试无法启动。
class SampleTest {
@Test
void test() {
assertEquals(1, 1);
}
}
mvn test
...
java.lang.reflect.InaccessibleObjectException:
Unable to make org.sample.SampleTest.test() accessible:
module sample.core does not "opens org.sample" to unnamed module @7d9d1a19
请帮助我找到一个正确的方法来配置surefire插件,这样它就可以运行测试而不需要 public
到处都是。
如果需要的话,可以更改surefire和junit的版本-它们只是为了清晰起见。
1条答案
按热度按时间cgyqldqp1#
我通过了你的测试:
在src/test/java中将java包com.sample重命名为com.sample1
然后在src/test/java中添加module-info.java
参见src/test/java/module-info.java的内容
我知道您希望在两个模块(src/main/java和src/test/java)中使用相同的java包,但在jpms中是不可能的。从junit 5.7或其他版本开始,关键字“open”是必需的,如果您删除它,它将失败: