单元测试(2)--Junit简明指南
来源:互联网 发布:java native static 编辑:程序博客网 时间:2024/06/05 11:00
一、常用断言
1. assertEquals([String message],Object target,Object result) target与result不相等,中断测试方法,输出message
assertEquals(a, b) 测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
assertEquals断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
public static void assertEquals(Object[] expected, Object[] actual)
public static void assertEquals(String message, Object[] expected, Object[] actual)
是JUnit 4 为比较数组添加的两个 assert() 方法.这两个方法以最直接的方式比较数组:如果数组长度相同,且每个对应的元素相同,则两个数组相等,否则不相等。数组为空的情况也作了考虑。 .
2. assertTrue/False([String message],Boolean result) Result为 false/true,中断测试方法,输出message
assertTrue 断言条件为真,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
assertFalse 断言条件为假,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
assertFalse(a) 测试a是否为false(假),a是一个Boolean数值;
3. assertNotNull/Null([String message],Obejct result ) Restult == null/result!=null,中断测试方法,输出message
assertNull 断言对象为null,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
assertNotNull 断言对象不为null,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
assertNotNull(a) 测试a是否非空,a是一个对象或者null;
4.assertSame/NotSame?(Object target,Object result) Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError?异常。
assertNotSame 断言两个引用指向不同对象,若不满足,方法抛出带有相应信息的AssertionFailedError?异常。
assertNotSame(a, b) 测试a和b是否没有都引用同一个对象;
5. fail([String message]) 中断测试方法,输出message
Fail 让测试失败,并给出指定信息。
二、注解(java annotation)
JUnit 4 使用 Java 5 中的注解(annotation),以下是JUnit 4 常用的几个 annotation 介绍
@Before:初始化方法
@After:释放资源
@Test:测试方法,在这里可以测试期望异常和超时时间
@Ignore:忽略的测试方法
@BeforeClass?:针对所有测试,只执行一次,且必须为static void
@AfterClass?:针对所有测试,只执行一次,且必须为static void
一个JUnit 4 的单元测试用例执行顺序为:
@BeforeClass? –> @Before –> @Test –> @After –> @AfterClass?
@Ignore:忽略该用例
如下代码所示,verifyZipCodeMatch不会被执行
@Ignore("this regular expression isn't working yet")@Testpublic void verifyZipCodeMatch() throws Exception{ Pattern pattern = Pattern.compile("^\\d{5}([\\-]\\d{4})"); Matcher mtcher = pattern.matcher("22011"); boolean isValid = mtcher.matches(); assertTrue("Pattern did not validate zip code", isValid);}
三、特殊的测试类型
1.对异常的测试
通过在@Test后加上期望的异常,如果没抛出该异常,则测试失败
@Test(expected=IndexOutOfBoundsException.class) public void verifyZipCodeGroupException() throws Exception{ Matcher mtcher = this.pattern.matcher("22101-5051"); boolean isValid = mtcher.matches(); mtcher.group(2); }
2.对超时的测试
通过在@Test后加入指定的超时时间(单位:毫秒)
@Test(timeout=1)public void verifyFastZipCodeMatch() throws Exception{ Pattern pattern = Pattern.compile("^\\d{5}([\\-]\\d{4})?$"); Matcher mtcher = pattern.matcher("22011"); boolean isValid = mtcher.matches(); assertTrue("Pattern did not validate zip code", isValid);}
注:本文内容主要来自网络摘录,主要是为了整合和方便查找
深入探索 JUnit 4 http://www.ibm.com/developerworks/cn/education/java/j-junit4/index.html
JUnit 4 使用 Java 5 中的注解(annotation) http://niatwangcong.iteye.com/blog/292820
JUnit断言方法 http://ryxxlong.iteye.com/blog/716428
- 单元测试(2)--Junit简明指南
- junit 单元测试指南
- 单元测试(2):使用JUnit
- JUnit单元测试
- JUnit 单元测试
- 单元测试JUnit
- Junit单元测试
- Junit单元测试
- junit单元测试
- JUnit单元测试
- Junit单元测试
- JUnit单元测试
- junit单元测试
- Junit单元测试
- Junit 单元测试
- Junit单元测试
- JUnit单元测试
- JUnit单元测试
- 研发管理:与员工一对一交流的执行与反思
- 对数据传输对象理解
- 『MySQL』时间戳转换
- Android实现数据存储技术
- [MFC]线程优先级设置,下拉列表框ComboBox,复选框CButton,列表框CListBox的使用
- 单元测试(2)--Junit简明指南
- 【Nim博弈】Hdu 1850 Being a Good Boy in Spring Festival
- hdu4079
- php将ip转换成无符号整数
- ssh: connect to host localhost port 22: Connection refused 问题
- JQuery选择器使用以及对元素的操作方法
- 51中ret和reti的区别
- 2013年5月华为实习生招聘之机试练习题
- 『MySQL』多表之间字段的匹配