Java 在Junit-4.11中找不到类

Java 在Junit-4.11中找不到类,java,junit,Java,Junit,我在Mac上配置了Junit-4.11,用javac编译没有错误,但是当我用java运行时,我发现找不到类:HelloWorldTest 这是我的HelloWorld.java和HelloWorldTest.java import java.util.*; public class HelloWorld { public String output() { return "Hello world!"; } } import static org.junit.A

我在Mac上配置了Junit-4.11,用
javac
编译没有错误,但是当我用
java
运行时,我发现
找不到类:HelloWorldTest

这是我的
HelloWorld.java
HelloWorldTest.java

import java.util.*;

public class HelloWorld {
    public String output() {
        return "Hello world!";
    }
}

import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.Test;
import java.util.*;
import org.junit.*;

public class HelloWorldTest {
    public HelloWorld helloworld = new HelloWorld();

    @BeforeClass
    public static void oneTimeSetUp() {
        System.out.println("@BeforeClass - oneTimeSetUp");
    }
    @AfterClass
    public static void oneTimeTearDown() {
        System.out.println("@AfterClass - oneTimeTearDown");
    }
    @Before
    public void setUp() {
        System.out.println("@Before - setUp");
    }
    @After
    public void tearDown() {
        System.out.println("@After - tearDown");
    }
    @Test
    public void testOutput() {
        assertEquals(helloworld.output(), "Hello world!");
        System.out.println("@Test - testOutput");
    }
}
我和你一起跑

javac-classpath./HelloWorldTest.java

import java.util.*;

public class HelloWorld {
    public String output() {
        return "Hello world!";
    }
}

import static org.junit.Assert.*;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.Test;
import java.util.*;
import org.junit.*;

public class HelloWorldTest {
    public HelloWorld helloworld = new HelloWorld();

    @BeforeClass
    public static void oneTimeSetUp() {
        System.out.println("@BeforeClass - oneTimeSetUp");
    }
    @AfterClass
    public static void oneTimeTearDown() {
        System.out.println("@AfterClass - oneTimeTearDown");
    }
    @Before
    public void setUp() {
        System.out.println("@Before - setUp");
    }
    @After
    public void tearDown() {
        System.out.println("@After - tearDown");
    }
    @Test
    public void testOutput() {
        assertEquals(helloworld.output(), "Hello world!");
        System.out.println("@Test - testOutput");
    }
}
java-classpath./org.junit.runner.JUnitCore HelloWorldTest

我得到的是

JUnit version 4.11
Could not find class: HelloWorldTest

Time: 0.002

OK (0 tests)
我用
HelloWorld.java
HelloWorldTest.java
junit-4.11.jar
放在当前目录中,我还将它放在/Library/java/Extensions中

我试图解决的问题是设置
JAVA\u HOME
CLASSPATH
,但它不起作用

有人能指出哪里出了问题吗?我真的很困惑

谢谢

我已经通过以下步骤解决了我的问题。我的Mac是MacOSX10.8,我使用的是苹果公司提供的JVM-1.6。你可以点击下载

  • 删除我的
    .zshrc
    文件中的
    CLASSPATH
    (如果您使用的是
    Bash
    ,我认为它是
    .bashrc
  • 删除
    /Library/Java/Extensions
    中的
    JUnit-4.11.jar
    (或您使用的任何版本)以及您将其放入的任何系统目录
  • 尝试再次编译并运行它
  • 我将
    JAVA_HOME
    设置为
    /System/Library/Frameworks/JavaVM.framework/Versions/1.6/HOME


    谢谢。

    更新:原始海报的解决方案隐藏在下面的评论中。它与在
    /Library/Java/Extensions
    中没有junit jar文件以及没有
    类路径有关:

    我删除了.zshrc文件中的类路径,还删除了 junit-4.11.jar位于/Library/Java/Extensions和 /Library/Java/Home/lib/ext,然后是JUnit-4.11


    在临时目录中(问题中的java文件):

    然后:

    • javac-cp junit-4.11.jar*.java
    • java-cp junit-4.11.jar:hamcrest-core-1.3.jar:。org.junit.runner.JUnitCore HelloWorldTest
    输出:

    HelloWorldTest
    JUnit version 4.11
    @BeforeClass - oneTimeSetUp
    .@Before - setUp
    @Test - testOutput
    @After - tearDown
    @AfterClass - oneTimeTearDown
    
    Time: 0,004
    
    OK (1 test)
    

    我建议从头开始重试

    好的,我也做了同样的测试。将提供相同的步骤:

    /
    |
    |--HelloWorld.java
    |--HelloWorldTest.java
    
    第一个进程HelloWorld.java

    javac HelloWorld.java
    
    javac -classpath C:\Himanshu_Work\repo\junit\junit\4.10\junit-4.10.jar;. HelloWorldTest.java
    
    这将导致HelloWorld.class位于同一文件夹中

    java -classpath C:\Himanshu_Work\repo\junit\junit\4.10\junit-4.10.jar;. org.junit.runner.JUnitCore  HelloWorldTest
    JUnit version 4.10
    @BeforeClass - oneTimeSetUp
    .@Before - setUp
    @Test - testOutput
    @After - tearDown
    @AfterClass - oneTimeTearDown
    
    Time: 0
    
    OK (1 test)
    
    下一个进程HelloWorldTest.java

    javac HelloWorld.java
    
    javac -classpath C:\Himanshu_Work\repo\junit\junit\4.10\junit-4.10.jar;. HelloWorldTest.java
    
    这将在同一文件夹中生成HelloWorldTest.class

    java -classpath C:\Himanshu_Work\repo\junit\junit\4.10\junit-4.10.jar;. org.junit.runner.JUnitCore  HelloWorldTest
    JUnit version 4.10
    @BeforeClass - oneTimeSetUp
    .@Before - setUp
    @Test - testOutput
    @After - tearDown
    @AfterClass - oneTimeTearDown
    
    Time: 0
    
    OK (1 test)
    

    CLASS_PATH在Java中没有任何意义,我猜你的意思是classpath考虑在构建中使用Maven或Gradle。对不起,是我的错,我纠正了它@Himanshubhardwaj感谢你的问题我设法解决了我的问题,但有一件事我不明白,为什么我们必须将hamcrest库与测试相关联?我仍然找不到类,还有什么我需要注意的吗?谢谢。检查两个.java是否都有一个已编译的.class,检查您的java版本。谢谢,两个.java都有一个已编译的.class,java版本是1.7.0,在OSX 10.8.4/java 1.6.0_51上仍然是“适合我的”。您应该尝试使用苹果提供的JVM(即1.6),我发现了差异。我在
    .zshrc
    文件中删除了
    CLASSPATH
    ,我还删除了
    /Library/Java/Extensions
    /Library/Java/Home/lib/ext
    中的
    junit-4.11.jar
    ,然后
    junit-4.11
    工作了。再次感谢你的帮助。我将更新我的问题。我在Mac OSX 10.8下仍然存在问题,但非常感谢。是运行HelloWorldTest.javaYes的javac命令后包含HelloWorldTest.class文件的文件夹。运行
    javac
    后的所有文件都在当前文件夹中。我没有要测试的MAC OS,但标准规则适用。所以这应该是好的。。。您是否尝试使用相同的参数为HelloWorld执行java命令,以查看它是否检测到HelloWorld类文件。也替换为。类内路径参数