问题描述
有一个src / main / java / module-info.java,只有一个export子句。
有一个src / test / java / example / sometest / AdderTest,其中包含:
package example.sometest;
public class AdderTest {
@Test
void test() {
assertEquals(5,Adder.add(2,3));
}
}
到目前为止一切顺利。现在,我使用@ExtendWith批注。
package example.sometest;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(NoopTestWatcher.class)
public class AdderTest { ... }
其中
package example.sometest;
import org.junit.jupiter.api.extension.TestWatcher;
public final class NoopTestWatcher implements TestWatcher { }
现在mvn测试给出了错误
[警告] ... / AdderTest.java:[9,2]模块中的org.junit.jupiter.api.extension.ExtendWith类未导出
[警告] /.../NoopTestWatcher.java:[6,41]模块中的org.junit.jupiter.api.extension.TestWatcher接口未导出
[错误] ... / AdderTest.java:找到警告并指定了-Werror
如何使ExtendWith正常工作?
解决方法
我不知道该怎么说,但是在JPMS和Maven下进行测试并不容易或不好。您遇到了一个行家问题,恕我直言gradle does it better,但这是我从所做工作的有限角度来看的观点,我们主要使用gradle
...
您可以使这项工作有效。首先,您需要在module-info.java
中使用一个单独的src/test/java
(Intellij
不会那样),然后您需要在src/main/java
中使用不同软件包名称,然后src/test/java
(即使项目所有者提供的示例也可以这样做,例如here)。因此,您的Interrupted
必须公开-这样漂亮吗?
总体而言,您可以从surefire + JUnit5教程开始,但是如上所述,您需要进行很多更改才能使其生效。您可能不喜欢的更改。您还应该意识到,这个问题并不是新问题,并且模块中的测试通常很复杂。