当前位置: 首页 > 知识库问答 >
问题:

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

齐航
2023-03-14

有一个只有exports子句的src/main/java/module-info.java。

有一个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工作?

共有1个答案

瞿子濯
2023-03-14

我不知道如何礼貌地说,但是在JPMS和maven下进行测试并不是那么容易或好的。您碰到了maven的一个问题,imho gradle做得更好,但这是我从有限的角度来看我所做的工作的观点,我们主要使用gradle...

你可以让这件事成功的。首先,您需要在src/test/java中使用一个单独的模块-info.javaintellij不是这样的),然后您需要在src/main/javasrc/test/java中使用不同的包名(甚至项目所有者提供的示例也是这样做的,例如这里)。所以您的interrupt必须公开--这不是很漂亮吗?

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

 类似资料:
  • 问题内容: 我试图将Python 3程序反向移植到2.7,但遇到了一个奇怪的问题: 根据文档,返回Unicode文本的内存流。当我尝试手动输入Unicode字符串时,它可以正常工作。为什么即使所有写入的字符串都是Unicode字符串,它也无法与模块结合使用?在什么地方来,它使得异常? (我知道我可以代替使用,但是我想知道在这种情况下怎么了) 问题答案: Python 2.7模块不支持Unicode

  • 在处理restasured时,我遇到了序列化和反序列化(POJO类)的概念来读取和验证响应。我阅读了一些教程,并根据我的回答创建了POJO类。 但是,当我在测试中使用POJO类引用时,我无法将then()块用于不同的断言。下面的细节可能会更清楚一些: 不带POJO的TestMethod: POJO的试验方法: 测试等级: 在使用POJO类时,我也希望保持然后块的断言不变。当我在as(ListUse

  • 我有一个带有Spring(5.7.2)Web/Security的REST API项目。 我只有一个表,它包含一个id和一个名称。 当我删除光盘时,我的DiscsService会 当我需要插入或更新时,我会: 我了解到,当您希望在同一事务中使用值(提交之前)时,将使用,并且将同步并清空SQL缓存。 在我的例子中,我看到我在数据库中插入/更新或删除了值。 我应该使用flush()(我认为不应该),但可

  • 问题内容: 我正在尝试在NodeJS中使用MySQL。我的整个应用程序都是基于Promise构建的,因此我也想推广该模块。 所以我有这个: 现在,根据他们的API,该方法接受一个参数,即在发生连接错误时调用的回调。我的问题是,这如何转化为承诺? 承诺会因错误而解决吗?会被拒绝吗?我可能需要吗?这是如何运作的? 问题答案: 如果某个方法是带有单个参数的节点“ errback”-它将在中没有任何参数地

  • 问题内容: 我最近开始使用Go 1.11,并且喜欢这些模块。除了运行时依赖性外,我还需要在构建期间(例如在期间)使用go模块。 如何安装特定的构建依赖项(例如github.com/aprice/embed/cmd/embed)并从哪个文件夹运行该特定工具?是正确的工具吗? 问题答案: https://github.com/golang/go/issues/25922被证明对我有帮助,特别是 在模块