gpt4 book ai didi

java - 在 JUnit 4.11 中找不到类

转载 作者:搜寻专家 更新时间:2023-10-31 08:03:42 24 4
gpt4 key购买 nike

首先,我已经查看了所有关于堆栈溢出的类似问题,但还没有对我有用。只是试图让 JUnit 与 Peter Tahchiev 的 JUnit in Action 2nd Edition 一书中的一个简单示例一起工作。

计算器.java

public class Calculator {
public double add(double number1, double number2) {
return number1 + number2;
}
}

计算器测试.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);
}
}

我的文件夹: Current Folder

我编译:

javac -cp junit-4.11.jar *.java

编译后我的文件夹: Current Folder after compiling

我尝试运行测试:

java -cp junit-4.11.jar;hamcrest-core-1.3.jar;. org.junit.runner.JUnitCore CalculatorTest

这是我的输出:

Output

当我尝试运行各个类时,jre 找到了它们,但抛出了预期的无主方法错误:

java Calculator
java CalculatorTest

输出(这是预期的,但它找到了类): Error 1 Error 2

有什么想法可以让 JUnit 发挥作用吗?

[编辑]
我在 C:\Users\Zach\Documents\docs\Code\JUnit
中运行所有命令上面的截图是同一个文件夹。
我正在使用 jdk1.7.0_45jre7
我正在使用 Windows 7 Professional N 64 位

我使用 -verbose:class 运行了 java 命令,除第 426 行的错误外没有其他错误,如下所示: verbose error

最佳答案

迷人。无论如何,您的 JRE 中的 lib/ext 中似乎有 junit-4.11.jar。该位置优先于类路径,加载到该目录中的类将加载到单独的类加载器中。

lib/ext 类加载器看不到类路径类加载器加载的类,因此 JUnit 看不到您的代码。如果您以这种方式从命令行使用 Junit,最好不要将 jar 放在您的 lib/ext 文件夹中。如果您以编程方式运行它(例如 JUnitCore.runClasses(...)),那么您可以使用普通类加载器加载您的类,并将它们传递给隐蔽类加载器中的 JUnit,一切都会很好。

所以,简短的回答可能是从 lib/ext 文件夹中删除 junit jar,前提是您首先知道它为什么在那里,并且这个原因不再有效。

关于java - 在 JUnit 4.11 中找不到类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20569440/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com