Java 在终端中编译/运行JUnit测试-无法找到或加载主类

Java 在终端中编译/运行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) {

上下文 我刚刚开始使用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) {
        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附带了一个测试运行程序,不需要在您自己的类中包含它。