本文是对唯鹿_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));
}
}
网友评论