ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# JUnit 有序测试执行示例 > 原文: [https://howtodoinjava.com/junit/ordered-testcases-execution-in-junit-4/](https://howtodoinjava.com/junit/ordered-testcases-execution-in-junit-4/) 编写 **JUnit 有序测试**案例被认为是[不良做法](https://howtodoinjava.com/best-practices/unit-testing-best-practices-junit-reference-guide/)。 但是,如果仍然遇到测试用例排序是唯一出路的情况,则可以使用`MethodSorters`类。 ## 1\. JUnit 方法排序器 从 JUnit4.11 版本开始引入`MethodSorters`。 此类声明了三种执行顺序,可以在测试用例中使用它们。 1. **`MethodSorters.DEFAULT`** – 以确定但不可预测的顺序对测试方法进行排序。 2. **`MethodSorters.JVM`** - 按照 JVM 返回的顺序保留测试方法。 3. **`MethodSorters.NAME_ASCENDING`** – **按方法名称**依字典顺序对测试方法进行排序,并使用`Method.toString()`作为平局。 ## 2\. JUnit 有序测试示例 – `NAME_ASCENDING` 让我们看看如何在 JUnit 中编写和执行有序的测试。 ```java 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"); } } ``` 程序输出。 ```java Executing first test Executing second test Executing third test ``` ## 2\. JUnit 有序测试示例 – JVM 现在使用`JVM`选项执行相同的测试。 ```java package corejava.test.junit; 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.JVM) 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"); } } ``` 程序输出: ```java Executing third test Executing first test Executing second test ``` 显然,只有`NAME_ASCENDING`顺序可让您控制真正的顺序,而其他两个选项在**测试执行顺序序列**中对于开发人员而言却无法提供足够的可预测性。 在此 [JUnit 教程](https://howtodoinjava.com/junit-5-tutorial/)中,我们学习了编写 **JUnit 顺序测试**的过程。 让我知道你的想法。 学习愉快! 参考: [`MethodSorters`类](https://junit.org/junit4/javadoc/4.12/org/junit/runners/MethodSorters.html)