JUNIT框架中用例的执行顺序问题

上一篇 / 下一篇  2008-02-01 20:53:43

    初出接触JUNIT,本以为每个test case的执行顺序会按java文件中的书写顺序进行,其实不然。测试中发现,有时莫名其妙执行结果与预期根本不一致,又查不到原因,最后将两个有耦合关系测试用例解除耦合性之后,重新运行用例,测试终于通过。google上搜了一下,确实如此:

public class SomeTestCase extends TestCase { 
public void testDoThisFirst () { 
... 

public void testDoThisSecond () { 


在上面这个例子中,当使用映射时,JUnit执行测试用例的顺序是不确定的。在不同的平台及Java VM上,可能产生不同的结果,除非你的测试被事先设计为按某种顺序执行。避免测试用例之间的短暂耦合会使你的测试用例更加健壮,因为即使改变测试用例的执行顺序也不会影响其它测试。如果测试耦合在一起,即使一个小的更新,也可能引发难于发现的错误。 

在某些情况下,测试的顺序还是有意义的————例如,测试用例可以使用一些共享数据时来提高效率。这些共享数据对于每个测试用例在运行时都会建立一个新的状态。————可以使用一个静态的 suite() 方法来保证执行顺序,如下: 

public static Test suite() { 
suite.addTest(new SomeTestCase ("testDoThisFirst";)); 
suite.addTest(new SomeTestCase ("testDoThisSecond";)); 
return suite; 

上面的两段内容是JUNIT Best Practice一文中写的,文章写的很不错,有空一定得仔细读一读,忙啊~~


TAG:

 

评分:0

我来说两句

Open Toolbar