Java 在终端中编译/运行JUnit测试-无法找到或加载主类
上下文 我刚刚开始使用Java(Ruby后台),需要试驾Hello World CLA。我正在使用JUnit(没有像Gradle/Maven这样的管理器),但无法编译测试来运行它 结构 HelloWorldJava/srcJava 在终端中编译/运行JUnit测试-无法找到或加载主类,java,junit,command-line,Java,Junit,Command Line,上下文 我刚刚开始使用Java(Ruby后台),需要试驾Hello World CLA。我正在使用JUnit(没有像Gradle/Maven这样的管理器),但无法编译测试来运行它 结构 HelloWorldJava/src main/java/HelloWorld.java test/java/HelloWorldTest.java 节目 public class HelloWorld{ public static void main(String[] args) {
- main/java/HelloWorld.java
- test/java/HelloWorldTest.java
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
测试
import org.junit.*;
import static org.junit.jupiter.api.Assertions.*;
import example.util.Calculator;
import org.junit.jupiter.apiTest;
class HelloWorldTest {
@Test
public void testAddition() {
HelloWorld helloWorld = new HwlloWorld();
assertTrue(helloWorld.equals("Hello World!"));
}
}
问题
public class HelloWorld{
public static void main(String[] args) {
System.out.println("Hello World!");
}
}
从src:$java-cp:'./test/java/*'HelloWorldTest.java
返回
错误:无法找到或加载主类HelloWorldTest.java
我最好的猜测是,这与类路径有关,但错误并没有给出太多信息
我需要做什么来编译和运行我的测试?我已经尝试将测试方法更改为“main”,这不会改变错误
编辑:我看过类似的问题,但没有成功实现解决方案。HelloWorldTest不包含main方法,这就是为什么找不到它的原因。主要方法是在HelloWorld中。要运行它,请键入
java -cp ./test/java HelloWorld
但他们想进行测试。它将打印消息
要运行测试,您需要一个启动JUnit测试运行程序的main方法
import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;
public class MyTestRunner {
public static void main(String[] args) {
Result result = JUnitCore.runClasses(MyClassTest.class);
for (Failure failure : result.getFailures()) {
System.out.println(failure.toString());
}
}
}
请阅读本精彩教程:
作为旁注,我建议在包中构造代码。
也就是说,将它们放在文件夹中并使用软件包说明。
请参见此处:请检查您的软件包结构这是否回答了您的问题@A就我所知,我的包结构是正确的,尽管看起来有alternatives@AleksandrSemyannikov我已经看过了,但还没能在那里做任何事情。我已经看了几个类似的问题,要么无法理解,要么已经尝试了,但解决方案没有起作用。感谢您的回复,我感谢您提供的资源。你能澄清一下JUnit测试运行程序应该在哪里吗?它会放在我的HelloWorldTest文件中,还是放在它自己的文件中?我之前一直在关注那个教程,我觉得你提到的部分有些地方被掩盖了,但在那之前它一直都很顺利。我会把测试运行程序放在它自己的类中。然后记住在编译和运行时将该类、您的测试类和被测试的类放在类路径上,更不用说junit库了。这是一个很好的练习,但在现实生活中,这就是为什么我们使用IDE或Maven等工具来管理所有依赖项的原因之一。JUnit附带了一个测试运行程序,不需要在您自己的类中包含它。