Junit学习

2018-06-03  本文已影响11人  四喜汤圆

本文是对唯鹿_Android单元测试(一):JUnit框架的使用的学习笔记

image.png

需要进行测试的工具类

import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Locale;

/**
 * <pre>
 *     author : 杨丽金
 *     time   : 2018/06/03
 *     desc   : 日期操作工具类
 * </pre>
 */
public class DateUtil {
    /*
    英文全称 如:2017-11-01 22:11:00
     */
    public static String FORMAT_YMDHMS = "yyyy-MM-dd HH:mm:ss";

    /**
     * 输入需要转换的时间,如("2017-11-01 22:11:00"),返回时间戳
     *
     * @param time
     * @return:时间戳
     */
    public static long dateToStamp(String time) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_YMDHMS, Locale.CHINA);
        Date date = sdf.parse(time);
        return date.getTime();
    }

    /**
     * 时间戳转化为时间如("2017-11-01 22:11:00")
     *
     * @param lt
     * @return
     */
    public static String stampToDate(long lt) {
        SimpleDateFormat sdf = new SimpleDateFormat(FORMAT_YMDHMS, Locale.CHINA);
        Date date = new Date(lt);
        return sdf.format(date);
    }
}

1.用单个数据进行测试、测试方法是否抛出指定的异常

import org.junit.After;
import org.junit.Before;
import org.junit.Test;

import java.text.ParseException;

import static org.junit.Assert.assertEquals;

/**
 * <pre>
 *     author : 杨丽金
 *     time   : 2018/06/03
 *     desc   :
 * </pre>
 */

public class DateUtilTest {

    private String time = "2017-10-15 16:00:02";
    private long stamp = 1508054402000L;

    @Before
    public void setUp() throws Exception {
        System.out.println("测试开始");
    }

    /*
     * 测试方法抛出异常
     */
    @Test(expected = ParseException.class)
    public void dateToStamp() throws Exception {
        assertEquals(1508054402000L, DateUtil.dateToStamp("2018-06-03"));
    }

    /*
     * 用单个数据测试
     */
    @Test
    public void dateToStamp2() throws Exception {
        assertEquals(stamp, DateUtil.dateToStamp(time));
    }

    /*
     * 用单个数据测试
     */
    @Test
    public void stampToDate() throws Exception {
        assertEquals(time, DateUtil.stampToDate(stamp));
    }

    @After
    public void tearDown() throws Exception {
        System.out.println("测试结束");
    }
}

2.用数据集进行测试

import org.junit.Test;
import org.junit.runner.RunWith;
import org.junit.runners.Parameterized;

import java.text.ParseException;
import java.util.Arrays;
import java.util.Collection;

/**
 * <pre>
 *     author : 杨丽金
 *     time   : 2018/06/03
 *     desc   :
 * </pre>
 */
@RunWith(Parameterized.class)
public class DateFormatTest {

    private String time;
    public DateFormatTest(String time) {
        this.time = time;
    }
    /*
     * 用数据集合测试
     */
    @Test(expected= ParseException.class)
    public void dateToStamp() throws Exception {
        DateUtil.dateToStamp(time);
    }

    @Parameterized.Parameters
    public static Collection primNumbers(){
        return Arrays.asList(new String[]{
                "2017-05-12",
                "2018-04-09 11:34:23",
                "2017年10月4日 16时34分56秒"
        });
    }
}

3.指定Rule(将公共操作抽象出来)

@Rule
public MyRule rule=new MyRule();

MyRule.java

import org.junit.rules.TestRule;
import org.junit.runner.Description;
import org.junit.runners.model.Statement;

/**
 * <pre>
 *     author : 杨丽金
 *     time   : 2018/06/03
 *     desc   :
 * </pre>
 */
public class MyRule implements TestRule {
    @Override
    public Statement apply(final Statement base, final Description description) {
        return new Statement() {
            @Override
            public void evaluate() throws Throwable {

                // 相当于在@Before中调用
                String methodName=description.getMethodName();
                System.out.println(methodName+"测试开始");
                base.evaluate();
                // 相当于在@After中调用
                System.out.println(methodName + "测试结束");

            }
        };
    }
}

import org.junit.Rule;
import org.junit.Test;

import java.text.ParseException;

import static org.junit.Assert.assertEquals;

/**
 * <pre>
 *     author : 杨丽金
 *     time   : 2018/06/03
 *     desc   :
 * </pre>
 */

public class DateUtilTest {

    @Rule
    public MyRule rule = new MyRule();

    private String time = "2017-10-15 16:00:02";
    private long stamp = 1508054402000L;

  
    /*
     * 用单个数据测试
     */
    @Test
    public void dateToStamp2() throws Exception {
        assertEquals(stamp, DateUtil.dateToStamp(time));
    }

}

参考文献

唯鹿_Android单元测试(一):JUnit框架的使用

上一篇下一篇

猜你喜欢

热点阅读