首先, 我已经查看了关于堆栈溢出的所有类似问题,但我还没有任何工作。 试图让JUnit使用Peter Tahchiev撰写的JUnit in Action第二版中的一个简单例子。
Calculator.java
public class Calculator {
public double add(double number1, double number2) {
return number1 + number2;
}
}
CalculatorTest.java
import static org.junit.Assert.assertEquals;
import org.junit.Test;
public class CalculatorTest {
@Test
public void testAdd() {
Calculator calc = new Calculator();
double result = calc.add(1,1);
assertEquals(2, result,0);
}
}
我的文件夹:
我编译:
javac -cp junit-4.11.jar *.java
编译后的我的文件夹:
我尝试使用以下方式运行测试:
java -cp junit-4.11.jar;hamcrest-core-1.3.jar;. org.junit.runner.JUnitCore CalculatorTest
这是我的输出:
当我尝试运行各个类时,jre会找到它们,但会抛出一个无法预测的主方法错误:
java Calculator
java CalculatorTest
输出(预期,但它找到了类):
我有什么想法可以获得JUnit /无论表现如何?
[编辑]
我在C:\Users\Zach\Documents\docs\Code\JUnit
中运行所有命令
上面的屏幕截图是相同的文件夹
我正在使用jdk1.7.0_45
和jre7
我正在使用Windows 7 Professional N 64位
我使用-verbose:class运行了java命令,除了第426行的错误之外没有任何错误,如下所示:
答案 0 :(得分:0)
魅力。无论如何,你的JRE中的lib / ext似乎有junit-4.11.jar。此位置优先于类路径,并且此目录中加载的类将加载到单独的类加载器中。
lib / ext类加载器无法看到类路径类加载器加载的类,因此JUnit无法看到您的代码。如果您以这种方式从命令行使用Junit,最好不要将jar放在lib / ext文件夹中。如果您以编程方式运行它(例如JUnitCore.runClasses(...)),那么您可以使用普通的类加载器加载您的类,并将它们传递给隐藏的类加载器中的JUnit,一切都会很好。
所以,简短的回答可能是从lib / ext文件夹中删除junit jar,前提是你知道它为什么在那里,并且这个原因不再有效。