Junit 再读
单元测试框架主要完成三件事
- 提供用例组织与执行
- 提供丰富的比较方法
- 提供丰富的日志
Junit 单元测试框架解析
常用注解:
- @Test:测试方法
(A) (expected=XXEception.class)
(B) (timeout=xxx)
- @Ignore: 被忽略的测试方法
- @Before: 每一个测试方法之前运行。
- @After : 每一个测试方法之后运行。
- @BefreClass 所有测试开始之前运行。
- @AfterClass 所有测试结果之后运行。
package com.junit.test;
import static org.junit.Assert.*;
import static org.hamcrest.Matcher.*;
import org.junit.Test; import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.After;
import org.junit.Ignore;
import com.junit.test.count;
public class tests {
@BeforeClass //的所有方法运行之前运行。
public static void beforeClass(){
System.out.println("--beforeClass");
}
@AfterClass //在所有方法运行之后运行
public static void afterClass(){
System.out.println("--afterClass");
}
@Before //每个测试方法运行之前运行
public void before(){
System.out.println("==before");
}
@After //每个测试方法运行之后运行
public void after(){
System.out.println("==after");
}
@Test
public void testAdd() {
System.out.println("test Run through");
}
@Test ()
public void testdivision(){
System.out.println("in Test Division"); }
@Ignore //表示这个方法是不被运行的
@Test
public void testDivide(){
System.out.println("test Ignore");
}
}
运行结果:
--beforeClass
==before
test Run through
==after
==before
in Test Division
==after
--afterClass
错误类型:
- Errors:表示程序本身错误。
- Failures: 是指测试失败。
断言方法:
assertArrayEquals(expecteds, actuals)
:查看两个数组是否相等。assertEquals(expected, actual)
:查看两个对象是否相等。assertNotEquals(first, second)
:查看两个对象是否不相等。assertNull(object)
:查看对象是否为空。assertNotNull(object)
:查看对象是否不为空。assertSame(expected, actual)
:查看两个对象的引用是否相等。类似于使用“==”比较两个对象assertNotSame(unexpected, actual)
:查看两个对象的引用是否不相等。类似于使用“!=”比较两个对象assertTrue(condition)
:查看运行结果是否为 true。assertFalse(condition)
:查看运行结果是否为 false。assertThat(actual, matcher)
:查看实际值是否满足指定的条件。fail()
:让测试失败。
批量执行测试用例
- 创建一个空类作为测试套件的入口;
- 使用注解 org.junit.runner.RunWith 和 org.junit.runners.Suite.SuitClasses 修饰这个空类
- 将 org.junit.runners.Suite 作为参数传入给注解 RunWith,以提示 Junit 为此类测试使用套件运行器执
行。 - 将需要放入此测试套件的测试类组成数组作为注解 SuiteClasses 的参数
- 保证这个空类使用 public 修饰,而且存在公开的不带任何参数的构造函数
package com.junit.test;
import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite.SuiteClasses;
@RunWith(Suite.class)
@SuiteClasses({
test.class,
tests.class
})
public class testAll {
}
明天是再读TestNG!