1 Junit——用於編寫運行可重複發自動化測試的開源測試框架 2 這裏用Eclipse IDE 3 其實無論是Eclipse仍是Intellij IDEA都是差很少的 4
5 使用步驟: 6 1.new a project,then 7 Build Path 8 Add Library 9 Junit 4
10
11 2.編寫好將要測試的類及方法 12 3.建立另外一個類,用於測試(通常都須要建一個和src並行的文件夾,由於不要把測試文件和源文件放在一塊兒) 13
14 測試類註解介紹 15 @Test+方法: 16 指示一個測試用例 17
18 @Before+方法: 19 表示該方法必須在每一個測試以前運行,一遍測試某些先決條件(注意:每一個測試用例以前) 20
21 @BeforeClass+方法: 22 指示附着的靜態方法,在全部的測試以前必須運行一次,發生這種狀況時通常是測試計算共享配置方法如鏈接到數據庫(注意:是整個類執行以後) 23
24 @After+方法: 25 測試後執行的內容,好比重置某些必要的變量、刪除某些變量等必要操做。(注意:每一個測試用例以後) 26
27 @AfterClass+方法: 28 在全部測試類執行完以後執行,此方法爲靜態(注意:是整個類執行以後) 29
30 @Ignore+方法: 31 不執行該方法 32
33 注意:必需要將@BeforeClass、@AfterClass聲明爲靜態 34
35
36 須要導入的包: 37 org.junit.*
38 static org.junit.Assert.*; //靜態的
39
40
41 斷言 42 1.void assertEquals(String 可選message,expectedValue,actualValue) 43 2.void assertTrue(String 可選message,boolean value) 44 void assertFalse(String 可選message,boolean value) 45 3.void assertNotNull(String 可選message,Object o) 46 void assertNull(String 可選message,Object o) 47 4.void assertSame(String 可選message,Object expect,Object actual) 48 void assertNotSame(String 可選message,Object expect,Object actual) 49 5.void assertArrayEquals(String mes,expectedArr, actualArr) 50
51
52
53 套件測試 54 ——捆綁幾個單元測試用例而且一塊兒執行它們 55 使用註解: 56 @RunWith 57 @Suite(中文:一套) 58
59 使用: 60 1.創建須要捆綁測試的全部測試用例(多個不一樣的測試類):Testi(i=1,2,3...) 61 2.創建新類:TestSuite: 62 import org.junit.runner.RunWith; 63 import org.junit.runner.Suite; 64 @RunWith(Suite.class) 65 @Suite.SuiteClass({Test1.class,Test2.class,,,}) 66 //使用{},將須要捆綁的類.class用逗號分隔,造成數組。 67 //注意:上面兩條註解是在主類以前的,未在其中。由於它們註釋的是類,而不是方法
68 public class Main{ 69 //something
70 } 71
72 package Junit; 73
74 import org.junit.runner.RunWith; 75 import org.junit.runners.Suite; 76
77 @RunWith(Suite.class) 78 @Suite.SuiteClasses({ 79 FuncTest.class, 80 FuncTest2.class, 81 AtExplaination.class
82 }) 83
84 public class SuiteTest { 85 } 86
87
88
89 時間測試 90 若是一個測試用例在指定的毫秒級別時間裏爲執行完,咱們能夠人爲認定它爲失敗 91 ————timeout參數、@Test, 92 即@Test(timeout=n) 93
94 package Junit; 95 import org.junit.Test; 96
97 public class Timeout { 98 @Test(timeout = 100) 99 public void timeTest(){ 100 while (true){ 101
102 } 103 } 104 } 105
106
107
108 異常測試——@Test(expected = AClass.class) 109 eg:@Test(expected=ArithmeticException.class) 110
111
112
113 參數化測試 114 將一系列參數用於一個測試類的測試 115 1.該類註解爲@RunWith(Parameterized.class) 116 2.該類有一個構造方法,用於存儲測試數據 117 3.該類有一個靜態方法生成並返回測試數據,必須有註解@Parameters (注意:必須是靜態) 118 4.有一個測試用例@Test 119
120 package Junit; 121
122 import org.junit.Test; 123 import org.junit.runner.RunWith; 124 import org.junit.runners.Parameterized; 125 import static org.junit.Assert.*; 126 import java.util.Arrays; 127 import java.util.Collection; 128
129 @RunWith(Parameterized.class) 130 public class ParameterizedTest { 131 int expected; 132 int first; 133 int second; 134 public ParameterizedTest(int expected,int first,int second){ 135 this.expected =expected; 136 this.first =first; 137 this.second = second; 138 } 139
140 @Parameterized.Parameters 141 public static Collection add(){ 142 return Arrays.asList(new Integer[][]{{5,2,3},{9,4,5},{8,3,5},{1,2,1}});//爲何用int不行
143 } 144 @Test 145 public void sum(){ 146 assertEquals(expected,add(first,second)); 147 } 148
149 public static int add(int a,int b){ 150 return a+b; 151 } 152
153 } 154
155
156 測試規則。。。