junit 顺序执行测试用例


没接触前,大多数人都会认为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);
}
Joyce /
Published under (CC) BY-NC-SA in categories junit  tagged with junit