我试图使用JUnit(4)的测试套件特性运行给定(Java-16,模块化)项目中的所有测试(跨许多不同的子包打包);但这比我想象的要困难得多,似乎每个测试(子)包都需要一个-add-opens
JVM选项。
MVE是一个带有测试套件的项目mve
package mve.test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import mve.test.sub.HelloTest;
@RunWith(Suite.class)
@Suite.SuiteClasses(HelloTest.class)
public class AllTests {
// Empty by design.
}
字符串
子包mve.test.sub
中的(唯一)测试是
package mve.test.sub;
import org.junit.Test;
import mve.main.Hello;
public class HelloTest {
@Test
public void test() {
Hello.main(null);
}
}
型
这个项目不输出任何东西,也不需要任何东西,这就是我想保持它的方式。
有没有什么方法可以做到这一点,而不需要为每个子包xxx
添加--add-opens mve/mve.test.xxx=ALL-UNNAMED
到JVM中?
如果没有,这将是对测试类使用(大量)包的沉重打击。
1条答案
按热度按时间blmhpbnm1#
在Junit 5中,它是这样工作的:
创建一个suite类来运行所有模块的测试,如下所示:
字符串
在每个测试模块中,导出的包必须对Junit打开,例如:
型
当然,每个模块内部都必须有自己的测试。