JUnit是java單元測試工具。java
1、在項目中構建單元測試的一些規則:‘
數組
1.新建一個源代碼目錄來存放咱們的測試代碼,一般命名爲:test
eclipse
2.測試類的包應該和測試類保持一致。函數
3.測試單元中的每一個方法必須能夠單獨測試,測試方法不能有任何的依賴。工具
4.測試方法必須使用public void 經行修飾,不能帶任何的參數。單元測試
5.測試方法使用test做爲方法的前綴。【不是必須的】測試
6.測試類使用Test類做爲類名的後綴。【不是必須的】ui
注意:[eclipse]一般能夠直接在測試類上面,單擊右鍵來建立一個JUnitl測試類,eclipse會自動生成與測試類相對應 的包名。測試方法等以上規則)this
2、對於JUnit的測試結果說明
spa
1.Failure通常由單元測試使用的斷言方法判斷失敗所引發的,這表示測試點發現了問題,那程序輸出的結果和咱們預期的結果不同形成。
2.error是由代碼異常引發的,它能夠產生於測試代碼自己的錯誤,也能夠是被測試代碼中的一個隱藏的bug。
3.測試用例是用來證實你沒有錯,而不是用來證實你是對的。
3、@Test屬性
1.@Test(expected = XX.class) 捕獲異常。若是程序捕獲達到相對應的XX.class異常,那麼程序也表示成功。若是出 現其餘異常,則會報錯。
2.@Test(timeout = 毫秒)測試代碼塊的運行時間。當到達該時間時,若是程序還沒執行完成,那麼程序也將退出。
4、測試套測 @RunWith(XX.class)
1.測試套件就是組織測試類一塊兒運行的入口類。
a).寫一個做爲測試套件的入口類,這個類裏面不包含其餘的方法。
b).更改測試運行器XX.class.
c).將要測試的類做爲數組傳入到 @Suite.SuiteClasses({test1.class,test2.class..... }),
@RunWith(Suite.class) @Suite.SuiteClasses({TaskTest1.class,TaskTest2.class}) public class SuiteTest { //不能夠包含其餘方法 }
5、JUnit中的參數化設置
1.更改默認的測試運行器爲@RunWith(XX.class)
2.聲明變量來保存預期值和結果值。
3.聲明一個返回值爲Collection的公共靜態方法,並使用@Parameters進行修飾。
4.爲測試類聲明一個帶參數的公共構造函數並在其中爲聲明變量賦值。
import static org.junit.Assert.*; import java.util.Arrays; import java.util.Collection; import org.junit.Test; import org.junit.runner.RunWith; import org.junit.runners.Parameterized; import org.junit.runners.Parameterized.Parameters; import com.sun.org.glassfish.gmbal.ParameterNames; /** * @author 做者 E-mail: xuebinlu@163.com * @version 建立時間:2015年12月1日 下午9:31:47 * 對於最上面的import static 靜態導入,這個和平時的import導入的區別在於,前者導入之後,在當前類下不用再使用類名調用,直接調用導入類的靜態方法就行,然後者這須要經過導入類的類名來調用靜態方法。 */ @RunWith(Parameterized.class) public class ParameterTest { int expected = 0; int input1 = 0; int input2 = 0; @Parameters public static Collection<Object[]> t(){ return Arrays.asList(new Object[][]{ {6,1,5}, {5,2,3} }); } public ParameterTest(int expected, int input1, int input2) { super(); this.expected = expected; this.input1 = input1; this.input2 = input2; } @Test public void test() { assertEquals(expected,new Calculate().add(input1, input2)); } }