Java 在Junit-4.11中找不到类
我在Mac上配置了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
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类文件。也替换为。类内路径参数