java - junit 5 编译为模块

标签 java module junit5

我有关于 junit.jupiter 的问题。将测试编译为模块有用吗?类似这样的事情吗?

module usecases {
  requires org.junit.jupiter.api;
}

当我尝试使用 ant 进行编译时,收到以下错误消息:

[javac] error: module not found: org.opentest4j
[javac] error: module not found: org.apiguardian.api

我不明白它,因为在类路径中它可以毫无问题地编译,但在模块路径中则不然?

最佳答案

两个模块以及 org.junit.platform.commons 都需要满足 org.junit.jupiter.api 的声明。请参阅模块描述符的此片段:

/**
 * Defines JUnit Jupiter API for writing tests.
 */
module org.junit.jupiter.api {
    requires transitive org.apiguardian.api;
    requires transitive org.junit.platform.commons;
    requires transitive org.opentest4j;

    exports org.junit.jupiter.api;
...
}

这就是为什么您必须配置构建工具以至少提供这三个模块。

IIRC,Ant 的默认“JUnit 5”集成使用非模块化 junit-platform-console-standalone 工件。它的 JAR 确实包含所有必需的普通类,但没有 module-info.class 文件。因此,在类路径上编译和运行是开箱即用的。

有关使用“JUnitLauncher 任务”的更多最新详细信息可以在此处找到:https://ant.apache.org/manual/Tasks/junitlauncher.html

关于java - junit 5 编译为模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60348320/

相关文章:

android - Titanium Appcelerator 安卓模块 : How to create a proxy?

perl - 我应该如何在 Perl 中维护我的对象模块?

java - JUnit 5 中的 ExternalResource 和 TemporaryFolder 等价物是什么?

java - 如何使用 JUnit 5 模拟 Spring 依赖关系?

java - 创建日记应用程序,但无法从 TextView 中获取要保存在 firebase 数据库中的文本

java - 我应该为永远不会改变的字段值使用访问器吗?

java - 使用嵌入式 Jetty 提供的 GWT 前端运行 Java 守护进程

linux - Linux 内核如何知道在启动时加载哪些驱动程序?

java - 快速将assertXY语句从JUnit4迁移到Junit5?

java - RxJava- cache() 和 replay() 一样吗?