Java 当存在-Werror时,如何将junit5 ExtendWith与模块一起使用

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

有一个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));
    }
}
到目前为止还不错。现在我使用@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 { }