如何使 JUnit 测试用例按顺序运行?

2022-09-01 16:33:40

我正在使用JUnit4。

我在测试用例中有一组测试方法。

每种测试方法都会插入一些记录并验证测试结果,最后删除插入的记录。

由于 JUnit 并行运行,因此测试方法会失败,因为在执行以前的测试方法时存在一些记录。这只发生在我的同事机器(Windows 7)中,而不是在我的机器(Cent OS 6)中。

我们需要的是,测试方法必须通过我们所有的机器。

我尝试清除 Setup() 方法中的记录,但它仅适用于我的计算机。JUnit中是否有任何选项可用于使测试方法以统一的顺序运行?

谢谢


答案 1

MethodSorters 是 Junit 4.6 版本之后引入的一个新类。此类声明了三种类型的执行顺序,在执行测试用例时,可以在测试用例中使用。

  1. NAME_ASCENDING(MethodSorters.NAME_ASCENDING) - 按方法名称按词典顺序对测试方法进行排序。

  2. JVM(null) - 使测试方法保持 JVM 返回的顺序。请注意,JVM my 的顺序因运行而异。

  3. DEFAULT(MethodSorter.DEFAULT) - 按确定性但不可预测的顺序对测试方法进行排序。

.

import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

//Running test cases in order of method names in ascending order

@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class OrderedTestCasesExecution {

    @Test
    public void secondTest() {
        System.out.println("Executing second test");
    }

    @Test
    public void firstTest() {
        System.out.println("Executing first test");
    }

    @Test
    public void thirdTest() {
        System.out.println("Executing third test");
    }
}

输出:

Executing first test
Executing second test
Executing third test

参考资料: http://howtodoinjava.com/2012/11/24/ordered-testcases-execution-in-junit-4/


答案 2

JUnit 4.11 现在支持使用@FixMethodOrder注释指定执行顺序。


推荐