JUnit中按照順序執行測試方式


  很多情況下,寫了一堆的test case,希望某一些test case必須在某個test case之后執行。比如,測試某一個Dao代碼,希望添加的case在最前面,然后是修改或者查詢,最后才是刪除,以前的做法把所有的方法都集中到某一個方法去執行,一個個羅列好,比較麻煩。比較幸福的事情就是JUnit4.11之后提供了MethodSorters,可以有三種方式對test執行順序進行指定,如下:

    /**
     * Sorts the test methods by the method name, in lexicographic order, with {@link Method#toString()} used as a tiebreaker
     */
    NAME_ASCENDING(MethodSorter.NAME_ASCENDING),

    /**
     * Leaves the test methods in the order returned by the JVM. Note that the order from the JVM may vary from run to run
     */
    JVM(null),

    /**
     * Sorts the test methods in a deterministic, but not predictable, order
     */
    DEFAULT(MethodSorter.DEFAULT);

可以小試牛刀一下:

使用DEFAULT方式:

package com.netease.test.junit;

import org.apache.log4j.Logger;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

/**
 * User: hzwangxx
 * Date: 14-3-31
 * Time: 15:35
 */
@FixMethodOrder(MethodSorters.DEFAULT)
public class TestOrder {
    private static final Logger LOG = Logger.getLogger(TestOrder.class);
    @Test
    public void testFirst() throws Exception {
        LOG.info("------1--------");
    }

    @Test
    public void testSecond() throws Exception {
        LOG.info("------2--------");

    }

    @Test
    public void testThird() throws Exception {
        LOG.info("------3--------");
    }

}
/*
output:
2014-03-31 16:04:15,984 0    [main] INFO  - ------1--------
2014-03-31 16:04:15,986 2    [main] INFO  - ------3--------
2014-03-31 16:04:15,987 3    [main] INFO  - ------2--------
*/

換成按字母排序

package com.netease.test.junit;

import org.apache.log4j.Logger;
import org.junit.FixMethodOrder;
import org.junit.Test;
import org.junit.runners.MethodSorters;

/**
 * User: hzwangxx
 * Date: 14-3-31
 * Time: 15:35
 */
@FixMethodOrder(MethodSorters.NAME_ASCENDING)
public class TestOrder {
    private static final Logger LOG = Logger.getLogger(TestOrder.class);
    @Test
    public void testFirst() throws Exception {
        LOG.info("------1--------");
    }

    @Test
    public void testSecond() throws Exception {
        LOG.info("------2--------");

    }

    @Test
    public void testThird() throws Exception {
        LOG.info("------3--------");
    }

}
/*
2014-03-31 16:10:25,360 0    [main] INFO  - ------1--------
2014-03-31 16:10:25,361 1    [main] INFO  - ------2--------
2014-03-31 16:10:25,362 2    [main] INFO  - ------3--------
*/

 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM