java - 在单个 Java 类的命令行中使用 JUnit 编译和运行测试
问题描述
我有一个简单的问题,我不知道如何解决!
我有一个 Java 文件User.java
:
import java.util.Vector;
public class User {
private String name;
private Vector<User> friends;
public User(String name) {
this.name = name;
this.friends = new Vector<>();
}
public void addFriend(User newfriend) {
friends.add(newfriend);
}
public boolean isFriendsWith(User friend) {
return friends.indexOf(friend) != -1;
}
}
我UserTest.java
在这个类旁边有一个简单的测试类:
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class UserTest {
@Test
public void evaluatesExpression() {
User user = new User("foo");
User user2 = new User("bar");
user.addFriend(user2);
assertEquals(true, user.isFriendsWith(user2));
}
}
我想为班级运行这个测试User
班。我没有使用 IntelliJ 或 Eclipse 之类的 IDE,所以我想从 linux 命令行编译测试,但是这个命令:
javac -cp .:"/usr/share/java/junit.jar" UserTest.java
给我以下错误:
UserTest.java:1: error: package org.junit does not exist
import static org.junit.Assert.assertEquals;
^
UserTest.java:1: error: static import only from classes and interfaces
import static org.junit.Assert.assertEquals;
^
UserTest.java:2: error: package org.junit does not exist
import org.junit.Test;
^
UserTest.java:6: error: cannot find symbol
@Test
^
symbol: class Test
location: class UserTest
UserTest.java:11: error: cannot find symbol
assertEquals(true, user.isFriendsWith(user2));
^
symbol: method assertEquals(boolean,boolean)
location: class UserTest
5 errors
注意:我在 Stackoverflow 上看到的所有内容都是关于在项目中测试单个文件或使用 gradle 构建和测试...,但我对 Java 了解不多,也不需要了解太多,我只需要了解为单个 Java 类创建和运行测试的最简单方法。
注意2:我已经安装了junit,apt install junit
它安装了junit-3-8-2
版本。
注3:我在编译我的测试类时遇到了问题,我什至还没有达到可以运行测试的阶段!
解决方案
在评论部分进行了大量试验和错误之后,根本原因是旧的 JUnit 3.8.2 依赖项。3.x 版本使用了不同的命名空间,在 4.x 中更改为org.junit
.
因此,在编译测试时找不到的类。
unzip
要调试此类问题,在 Linux 上解压缩 jar可能会有所帮助。
推荐阅读
- javascript - 使用数据模块时图表出现在视图中时为 Highcharts 系列制作动画
- docker - Docker 容器与 localhost 通信
- mysql - Docker-compose / init.sql 没有正确执行
- arrays - 对多列重复条件格式规则
- python - 相关基类的设计模式
- php - curl - 响应的空标题
- java - 如何在 Android 中正确管理领域以数据绑定视图,但关闭所有领域实例?
- spring - 编写没有价值的 REST API 时会返回什么?
- javascript - 验证表单中的非法字符
- python - 循环内的 Python 工作日