没接触前,大多数人都会认为JUnit中的test case会按照Java文件中的书写顺序进行,但在实际运用中,才发现其结果与预期不一致。
其 实,JUnit执行测试用例的顺序是不确定的。在不同的平台及Java VM上,可能产生不同的结果,除非你的测试被事先设计为按某种顺序执行。避免测试用例之间的短暂耦合会使你的测试用例更加健壮,因为即使改变测试用例的执 行顺序也不会影响其他测试。如果测试耦合在一起,即使一个小的更新,也可能引发难于发现的错误。?
在 某些情况下,测试的顺序还是有意义的————例如,测试用例可以使用一些共享数据时来提高效率。这些共享数据对于每个测试用例在运行时都会建立一个新的状 态。————可以使用一个静态的 suite() 方法来保证执行顺序,如下:?
public static Test suite() {
suite.addTest(new SomeTestCase ("testDoThisFirst";));
suite.addTest(new SomeTestCase ("testDoThisSecond";));
return suite;
}
顺序执行测试用例-举例
package com.ylzinfo.test.functional;
import junit.framework.Test;
import junit.framework.TestSuite;
import com.ylzinfo.test.functional.base.DBFunctionalTestCase;
public class TestOOO extends DBFunctionalTestCase {
public TestOOO(String name) {
super(name);
}
public void test1() throws Exception {
getAndSwitch("http://www.baidu.com");
waitUtilTextExist("fsafsafvagertew");
}
public void test2() {
System.out.println("2222222222222");
}
public void test3() {
System.out.println("33333333333333");
}
public void test4() {
System.out.println("444444444444");
}
public static Test suite() {
TestSuite suite=new TestSuite();
suite.addTest(new TestOOO("test1"));
suite.addTest(new TestOOO("test2"));
suite.addTest(new TestOOO("test3"));
suite.addTest(new TestOOO("test4"));
return suite;
}
}
注意每个类里面要加个构造方法:
public TestOOO(String name) {
super(name);
}