美文网首页
Junit学习

Junit学习

作者: 四喜汤圆 | 来源:发表于2018-06-03 19:39 被阅读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.用数据集进行测试

  • 类声明处用注解 @Runwith(Parameterized.class)


    类声明处用注解 .png
  • 在类内部写public static的方法,并用注解@Parameterized.Parameters标注 image.png
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(将公共操作抽象出来)

  • 创建类MyRule实现TestRule接口,重写其中的抽象方法apply(),在其中指定自己的规则
  • 在测试类中创建实例变量,并用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框架的使用

相关文章

  • 自我提升计划

    * Spring文档学习 * junit的源代码学习

  • Junit学习

    本文是对唯鹿_Android单元测试(一):JUnit框架的使用的学习笔记 需要进行测试的工具类 1.用单个数据进...

  • JUnit学习

    What is Junit?Junit is a simple framework to write repeat...

  • JDBC

    最近学习了Java中的JDBC,做个总结~~ 1.Jdbc基础准备 junit(单元测试的工具) Junit单元测...

  • Android 测试快速入门

    在正式学习Android应用测试之前,我们先来了解以下几个概念。 JUnit JUnit是一个Java语言的单元测...

  • Android 测试快速入门必看,你要知道的都在这了!

    在正式学习Android应用测试之前,我们先来了解以下几个概念。 JUnit JUnit是一个Java语言的单元测...

  • Spring学习笔记(6)- 注解方式测试

    1.效果 2.引入jar包 注解方式用到了junit,导入所需jar包,方法见学习(4)junit-4.12.ja...

  • Junit 学习二

    运行参数化 -@Parameterized.Parameters(name = "{index} : test (...

  • Junit学习一

    JUint是什么? JUnit是一个Java语言的单元测试框架。它由Kent Beck和Erich Gamma建立...

  • junit学习小结

    junit 什么是junit这是一个Java测试框架,可以通过它来编写测试案例,对写好的代码进行测试 如何使用在j...

网友评论

      本文标题:Junit学习

      本文链接:https://www.haomeiwen.com/subject/eufssftx.html