Junit4的基本的与生命周期相关的注解的使用,主要包括@BeforeClass、@Before、@Test、@After、@AfterClass这些注解
Spring与Junit
Spring是在测试类中由被@Before标注的方法所启动的,这时候,JVM已经将此测试类实例化了
org.junit.runner包下,有个JUnitCore.class,有一个 标准的main方法,这就是JUnit入口函数
public static void main(String... args) {
Result result = new JUnitCore().runMain(new RealSystem(), args);
System.exit(result.wasSuccessful() ? 0 : 1);
}
JUnit 4 常用的几个annotation 介绍
★ @Before:初始化方法,在任何一个测试执行之前必须执行的代码;
★ @After:释放资源,在任何测试执行之后需要进行的收尾工作。在每个测试方法执行之后执行一次,该annotation只能修饰public void 方法;
★ @Test:测试方法,表明这是一个测试方法。在Junit中将会自动被执行。该annotation只你呢个修饰public void 方法。对于方法的声明也有如下要求:名字可以随便取,没有任何限制,但是返回值必须为void,而且不能有任何参数。如果违反这些规定,会在运行时抛出一个异常。至于方法内该写些什么,那就要看你需要测试些什么了;在这里可以测试期望异常和超时时间,如 @Test(timeout = 100):我们给测试函数设定一个执行时间,超过了这个时间(100毫秒),它们就会被系统强行终止,并且系统还会向你汇报该函数结束的原因是因为超时,这样你就可以发现这些Bug了。
★ @Ignore:忽略的测试方法,标注的含义就是“某些方法尚未完成,暂不参与此次测试”;这样的话测试结果就会提示你有几个测试被忽略,而不是失败。一旦你完成了相应函数,只需要把@Ignore标注删去,就可以进行正常的测试。
★ @BeforeClass:针对所有测试,只执行一次,且必须为public static void;
★ @AfterClass:针对所有测试,将会在所有测试方法执行结束后执行一次,且必须为public static void;
所以一个Junit 4 的单元测试用例执行顺序为:@BeforeClass –> @Before –> @Test –> @After –> @AfterClass;每一个测试方法的调用顺序为:@Before –> @Test –> @After。
常用的断言介绍
1 、
assertEquals([String message],Object target,Object result)
//target与result不相等,中断测试方法,输出message
assertEquals(a, b); //测试a是否等于b(a和b是原始类型数值(primitive value)或者必须为实现比较而具有equal方法)
//断言两个对象相等,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
2、
assertTrue/False([String message],Boolean result);
Result为 false/true,中断测试方法,输出message
断言条件为真/假,若不满足,方法抛出带有相应信息的AssertionFailedError异常。
3、
assertNotNull/Null([String message],Obejct result);
Retult= = null/result!=null,中断测试方法,输出message
若不满足,方法抛出带有相应信息的AssertionFailedError异常。
4、
assertSame/NotSame(Object target,Object result)
Traget与result 不指向/指向 同一内存地址(实例),中断测试方法,输出message
assertSame 断言两个引用指向同一个对象,若不满足,方法抛出带有相应信息AssertionFailedError异常。
5、
fail([String message]);
中断测试方法,输出message
Fail 让测试失败,并给出指定信息。