9

我有一个新安装的 NetBeans 10。尝试运行我刚刚创建的一些初始单元测试,我收到以下错误:

如果不在 Ant 自己的类路径中,<classpath>or <modulepath>for必须包含 junit.jar<junit>

我可能会破解构建脚本以包含junit.jar,但我想知道:解决此问题的正确方法是什么?

NetBeans 不应该附带已经可以访问的 JUnit 版本吗?我应该以不同的方式配置我的项目吗?如何添加库的路径?

如何找到 Ant 的类路径(以及使用什么版本/二进制 NetBeans)?

该项目Test Libraries显示存在 JUnit 5.3.1,我在那里列出了三个 Jar 文件:junit-jipiter-api、junit-jupiter-params、junit-jupiter-engine。但它似乎并没有真正被发现。

该项目是一个标准的 Java 库(没有主类)。我没有添加任何“额外内容”或混淆 NetBeans 使用的默认项目设置。刚刚使用了基本的设置向导。


回覆。Geertjan Wielenga 来自 NetBeans 邮件列表的回复,他将我指向此线程并回复:

是的...

我们从未在 NB 10 中为基于 Ant 的项目实施 JUnit 5 支持。

约翰麦克唐纳

http://mail-archives.apache.org/mod_mbox/netbeans-users/201901.mbox/%3cCAAuDyk6WcgLaUDz0dp=4Arr7QGnwWcYey3VOeGojRRMRqVZrFA@mail.gmail.com%3e

所以我认为这行不通。我将在下面尝试建议的对 JUnit 4 的恢复。

4

3 回答 3

15

如果有帮助,我也在 xubuntu 中运行 netbeans 10。我不知道发生了什么,所以我不得不恢复到junit4。编辑:为了完全清楚,ant 需要 junit.jar,在默认的 netbeans 10 安装中找不到它。直到有人提出更好的解决方案,恢复到junit4:

1)在您的测试库中,右键单击并导入 junit 4.1.2 的。

2)删除junit 5.3的。

3)废弃测试文件中的所有导入并使用junit4。即您的导入将如下所示:

import static junit.framework.Assert.assertEquals;
import org.junit.Test;
import org.junit.*;
/*import org.junit.jupiter.api.AfterEach;
import org.junit.jupiter.api.AfterAll;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;*/

4) 废弃 beforeAll 和其他测试标签。只留下@Test 一个。

5) 全部保存,关闭并重新打开项目。它会抱怨 junit4 的 hamcrest 库没有被导入。允许 netbeans 为您修复它。

完成后,我能够测试成功和失败的测试。我猜当您使用模板生成器生成 junit 测试时,它会生成 junit5 测试,所以,有点烦人。但是你会有测试!

于 2019-01-12T19:00:50.107 回答
0

我有同样的错误,但这不是配置问题,只是一个错字。

我正在测试的类的主要方法是这样写的:

public static void main(String agrs) {
 ///
}

我唯一要做的就是正确地编写它,如下所示:

public static void main(String[] args) {
 ///
}

一旦我改变它,问题就消失了。我想这不是一个全球性的解决方案,但可能会有所帮助。

于 2020-06-14T01:57:54.213 回答
0

我发现一个更好的解决方案是从创建/更新测试中选择 JUnit 4。这样您就不必每次都重新配置测试。

来自 Netbeans:https ://netbeans.apache.org//kb/docs/java/junit-intro.html#_writing_junit_3_unit_tests

于 2021-03-08T09:52:59.267 回答