gpt4 book ai didi

java - JUnitCore run() 方法在每次测试之前不会隐式调用 setUp()

转载 作者:行者123 更新时间:2023-11-30 05:10:31 25 4
gpt4 key购买 nike

我正在使用 JUnitCore 的 run(junit.framework.Test test) 为 JUnit 测试用例创建自定义测试运行器并传入ClassName.suite() 。我的测试运行,但返回的结果是 null 。似乎对象没有在 setUp() 中初始化方法原因setUp()显然从未像它应该的那样被调用,即使使用 @Before注解。如果我实例化每个测试方法中所需的每个对象,则测试成功。然而,这种方法很乏味,并且违背了测试类的目的。这种行为正常吗? JUnit 是否有更好的测试运行程序可以反射(reflect)与 Eclipse 中的测试运行程序相同的行为?谢谢。

这是运行者的代码:

public class TestRunner
{
Result res = new Result();
String results = new String();
JUnitCore runner = new JUnitCore();

protected TestRunner()
{
}

public String runReport(Test input)
{
System.out.println(input.toString());
res = runner.run(input);
String testClass = "Class: ";
String testFailCt = "Failure Count: ";
String testFalures = "Failures: ";
String testRunCt = "Runs: ";
String testRunTm = "Run Time: ";
String testSuccess = "Success: ";
String newln = "\n";
results += testClass + input.getClass() + newln;
results += testFailCt + res.getFailureCount() + newln;
results += testFalures + newln;
List<Failure> failures = res.getFailures();
int i = 0;
for (Failure x: failures)
{
i++;
results += i +": " + x + newln;
}
results += testRunCt + res.getRunCount() + newln;
results += testRunTm + res.getRunTime() + newln;
results += testSuccess + res.wasSuccessful() + newln;
return results;
}
}

以下是runReport()的方法方法正在从另一个类调用:

runner.runReport(TestClassName.suite());

我应该将什么传递给run()这样setUp()每次测试之前都会隐式调用?我知道通过套房不会这样做。因此,我只是更改了我的测试用例,以便在每个测试中实例化所有必要的对象。

最佳答案

... setUp() apparently is never called as it should, even with the @Before annotation.

JUnit 版本 4 有注释支持 - 我认为 junit.framework 表明您正在使用版本 3。如果您使用 JUnit 3 TestRunner 运行 JUnit 4 测试,您可能会发现以下感兴趣的文章:

JUnit Test Runner that creates tests just before running them

JUnit FAQ - 参见“编写测试”段落。 3.

An early look at JUnit 4

祝你好运!

关于java - JUnitCore run() 方法在每次测试之前不会隐式调用 setUp(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3527235/

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