2010-08-20 75 views
1

我正在使用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()方法正在从另一个类称为在每次测试之前隐式调用?我知道通过套房不会这样做。因此,我只是更改了测试用例,以便在每个测试中实例化所有必需的对象。

+0

你能显示一些代码吗?查看你的意思或查看错别字更容易,这有时是导致问题的原因。 – 2010-08-20 15:44:59

回答

相关问题