测试执行顺序

在设计上Junit是没有指定测试方法的执行顺序的。到目前为止,方法的调用也只是根据反射API返回的顺序执行.然而,使用JVM的顺序是不明智的,因为JAVA不提供任何平台的执行顺序,而且JDK 7返回的是不确定的随机执行顺序.所以,你所写的测试代码通常也是没有执行顺序的.但是有的时候有预测的失败,比在某些平台上随机失败要好很多

从4.11版本,JUnit 将默认使用一些指定的顺序,但是不能确定它使用哪种顺序(MethodSorters.DEFAULT).要改变执行顺序,只需要简单的在你的测试类中使用@FixMethodOrder注解并且指定可用的MethodSorters,如下:

  • @FixMethodOrder(MethodSorters.JVM):由JVM返回的顺序执行方法,该方法可能每次的执行顺序都不同
  • @FixMethodOrder(MethodSorters.NAME_ASCENDING):按照测试方法名在字典中的排序执行

例子

    package com.junit.learning.order;

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

    @FixMethodOrder(MethodSorters.NAME_ASCENDING)
    public class TestMethodOrder {
        @Test
        public void testA() {
            System.out.println("first");
        }
        @Test
        public void testB() {
            System.out.println("second");
        }
        @Test
        public void testC() {
            System.out.println("third");
        }
    }

上面的例子将按照方法名在字典中的排序按照升序执行

results matching ""

    No results matching ""