上一節初步介紹了什么是單元測試,為什么要做單元測試,以及junit4的初步使用,這里我們接著說一下junit4中的注解。
=============本節知識點============================
* Error和Failures
* Junit4 Annotation
==================================================================
1. 在講注解之前,先來認識 Error和Failures這兩種錯誤有什么不同。
Errors:表示程序本身錯誤
@Test
publicvoid testAdd() {
int z=new T().add(5,3);
assertEquals(8,z);
int a=8/0; //這一句是有錯誤的
}
運行方法,會有一下錯誤提示:

Failures: 是指測試失敗。
@Test
publicvoid testAdd() {
int z=new T().add(5,4); //這里修改了數值,把4該為3就正確了
assertEquals(8,z);
}
在來運行這個方法,看一下錯誤提示:

所以,我們在寫測試程序的時候,要先保證Errors是沒有錯誤的,再來看Failures有沒有錯誤。
2. 下面介紹junit4 的常用注解
-----------------------------------------------------------------------------------------------
* @ Test:測試方法
A) (expected=XXEception.class)
B) (timeout=xxx)
*. @ Ignore: 被忽略的測試方法
*. @Before: 每一個測試方法之前云行。
*. @After : 每一個測試方法之后運行。
*. @BefreClass 所有測試開始之前運行。
*. @AfterClass 所有測試結果之后運行。
------------------------------------------------------------------------------------------------
下面通過一個測試程序來解釋這些注解含義

package com.junit4.cc.test;
importstatic org.junit.Assert.*;
importstatic org.hamcrest.Matcher.*;
import org.junit.Test;
import com.junit4.cc.*;
import org.junit.Before;
import org.junit.BeforeClass;
import org.junit.AfterClass;
import org.junit.After;
import org.junit.Ignore;
publicclass TTest {
@BeforeClass //的所有方法運行之前運行。
publicstaticvoid beforeClass(){
System.out.println("------------beforeClass");
}
@AfterClass //在所有方法運行之后運行
publicstaticvoid afterClass(){
System.out.println("-------------afterClass");
}
@Before //每個測試方法運行之前運行
publicvoid before(){
System.out.println("=======before");
}
@After //每個測試方法運行之后運行
publicvoid after(){
System.out.println("=======after");
}
@Test
publicvoid testAdd() {
int z=new T().add(5,3);
assertEquals(8,z);
System.out.println("test Run through");
}
@Test ()
publicvoid testdivision(){
System.out.println("in Test Division");
}
@Ignore //表示這個方法是不被運行的
@Test
(expected=java.lang.ArithmeticException.class,timeout=100) //timeout表示要求方法在100毫秒內運行完成,否則報錯
publicvoid testDivide(){
int z =new T().divide(8,2);
}
}

運行結果如下:

標記紅星(*)方法在每個方法開始和結尾都運行一次。
標記綠星(*)的方法只在所有方法的開始和結尾運行一次。
junit有多種注解,我們常用的也就上面幾種。