我正在使用JUnitCore的run(junit.framework.Test test)
和传入ClassName.suite()
为JUnit测试用例创建自定义测试运行器。我的测试运行,但返回的结果是null
。看起来对象没有在setUp()
方法中初始化,因为setUp()
显然永远不会被调用,因为它应该,即使使用@Before
注释。如果我在每个测试方法中实例化每个对象所需的测试都是成功的。然而,这种方法乏味并且失去了进行测试课程的目的。这种行为是否正常? JUnit中有更好的测试运行者,它们反映了Eclipse中测试运行者的相同行为?谢谢。JUnitCore run()方法在每次测试之前并不隐式调用setUp()
这里是亚军代码:
runner.runReport(TestClassName.suite());
我应该通过什么成run()
使setUp()
将是:
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()
方法正在从另一个类称为在每次测试之前隐式调用?我知道通过套房不会这样做。因此,我只是更改了测试用例,以便在每个测试中实例化所有必需的对象。
你能显示一些代码吗?查看你的意思或查看错别字更容易,这有时是导致问题的原因。 – 2010-08-20 15:44:59