Java 当存在-Werror时,如何将junit5 ExtendWith与模块一起使用
有一个src/main/java/module-info.java,其中只有一个exports子句 有一个src/test/java/example/sometest/AdderTest,它具有:Java 当存在-Werror时,如何将junit5 ExtendWith与模块一起使用,java,maven,junit5,java-module,java-platform-module-system,Java,Maven,Junit5,Java Module,Java Platform Module System,有一个src/main/java/module-info.java,其中只有一个exports子句 有一个src/test/java/example/sometest/AdderTest,它具有: package example.sometest; public class AdderTest { @Test void test() { assertEquals(5, Adder.add(2, 3)); } } 到目前为止还不错。现在我使用@Extend
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 { ... }
在哪里
现在mvn测试给出了错误
[警告]…/AdderTest.java:[9,2]未导出模块中的类org.junit.jupiter.api.extension.extendedwith
[警告]/…/NoopTestWatcher.java:[6,41]未导出模块中的接口org.junit.jupiter.api.extension.TestWatcher
[错误]…/AdderTest.java:找到警告并指定了-Werror
如何使ExtendWith工作?我不知道如何礼貌地说,但在JPMS和maven下进行测试并不是那么容易或好。你遇到了maven的问题,imho,但这是我从有限的角度对我所做的工作的看法,我们主要使用
gradle
在某种程度上,你可以让它工作。首先,在src/test/java
中需要一个单独的module info.java
(Intellij
不会这样),然后在src/main/java
和src/test/java
中需要不同的包名(例如,即使是项目所有者提供的示例也会这样做)。所以你的被打断了
必须公开——这不是很美吗
总的来说,您可以从教程开始,但如上所述,您需要做很多更改才能使其工作。您可能不喜欢的更改。您还应注意,此问题并非新问题,模块测试工作通常是复杂的。
-Werror
指定,您是否将警告视为错误?可能值得更新标题以添加“无警告”字样,NoopTestWatcher
comming from在哪里?@Naman好主意done@khmarbaise我输入了那个类的代码。这是我自己在同一个包中定义的类。@snaran看到什么了吗?404?
package example.sometest;
import org.junit.jupiter.api.extension.TestWatcher;
public final class NoopTestWatcher implements TestWatcher { }