【问题标题】:How to use junit5 ExtendWith with modules when -Werror is present存在-Werror时如何将junit5 ExtendWith与模块一起使用
【发布时间】:2023-03-16 15:42:01
【问题描述】:

有一个 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 { ... }

在哪里

package example.sometest;
import org.junit.jupiter.api.extension.TestWatcher;
public final class NoopTestWatcher implements TestWatcher { }

现在 mvn test 出现错误

[警告] .../AdderTest.java:[9,2] 模块中的类 org.junit.jupiter.api.extension.ExtendWith 未导出

[WARNING] /.../NoopTestWatcher.java:[6,41] interface org.junit.jupiter.api.extension.TestWatcher in module is not export

[ERROR] .../AdderTest.java: 发现警告并指定 -Werror

如何让 ExtendWith 工作?

【问题讨论】:

  • -Werror specified,您是否将警告视为错误?可能值得更新标题以添加“无警告”字样
  • NoopTestWatcher 来自哪里?
  • @Naman 好主意完成
  • @khmarbaise 我输入了该类的代码。这是我自己在同一个包中定义的类。
  • @snaran 看到什么? 404?

标签: java maven junit5 java-module java-platform-module-system


【解决方案1】:

我不知道怎么说礼貌,但是在JPMS和maven下测试,不是那么容易或好。您遇到了 maven 的问题,恕我直言 gradle does it better,但这是我从有限的角度看待我所做的工作的观点,我们主要使用 gradle...

你可以做到这一点。首先,您需要在 src/test/java 中使用单独的 module-info.java(Intellij 不会这样),然后您需要在 src/main/java 和 src/test/java 中不同包名称(即使是提供的示例项目所有者这样做,例如here)。所以你的Interrupted 必须公开 - 这不是很漂亮吗?

总体而言,您可以从surefire + JUnit5 教程开始,但如上所述,您需要进行大量更改才能使其正常工作。您可能不喜欢的更改。您还应该知道,这个问题并不是新问题,并且模块中的测试工作通常很复杂。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-12-13
    • 1970-01-01
    • 2022-11-12
    • 2021-12-26
    • 2012-10-18
    • 2018-03-21
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多