1 Junit單元測試框架的基本使用
一、搭建環境:
導入junit.jar包(junit4)
二、寫測試類:
0,一般一個類對應一個測試類。
1,測試類與被測試類最好是放到同一個包中(可以是不同的源文件夾)
2,測試類的名字爲被測試類的名字加Test後綴。
三:寫測試方法:
0,一般一個方法對應一個單元測試方法。
1,測試方法的名字爲test前綴加被測試方法的名字,如testAddPerson()。
2,單元測試方法上面要加上@Test註解(org.junit.Test)!
3,單元測試方法不能有參數,也不能有返回值(返回void)!測試的方法不能是靜態的方法。
四、測試方法的基本使用:
1,可以單獨執行一個測試方法,也可以一次執行所有的、一個包的、一個類中所有的測試方法。
2,執行完後,顯示綠色表示測試成功;顯示紅色表示測試失敗(拋異常後會測試失敗)。
2 Assert斷言工具類
其中有一些靜態的工具方法(不符合期望就拋異常):
assertTrue(...) 參數的值應是true
assertFalse(...) 參數的值應是false
assertNull(...) 應是null值
assertNotNull(...) 應是非null的值
assertSame(...) 使用==比較的結果爲true(表示同一個對象)
AssertNotSame(...) 使用==比較的結果爲false
assertEquals(...) 兩個對象equals()方法比較結果爲true
3 用於準備環境、清理環境的方法
@Test
表示單元測試方法。
@Before
所修飾的方法應是非static的(且沒有參數,返回值爲void)。
表示這個方法會在本類中的每個單元測試方法之前都執行一次。
@After
所修飾的方法應是非static的(且沒有參數,返回值爲void)。
/*
junit(單元測試框架)
目前存在的問題:
1. 目前的方法如果需要測試,都需要在main方法上調用。
2. 目前的結果都需要我們人工對比。
junit要注意的細節:
1. 如果使用junit測試一個方法的時候,在junit窗口上顯示綠條那麼代表測試正確,
如果是出現了紅條,則代表該方法測試出現了異常不通過。
2. 如果點擊方法名、 類名、包名、 工程名運行junit分別測試的是對應的方法,類、 包中 的所有類的test方法,工程中的所有test方法。
3. @Test測試的方法不能是static修飾與不能帶有形參。
4. 如果測試一個方法的時候需要準備測試的環境或者是清理測試的環境,那麼可以@Before、 @After 、@BeforeClass、 @AfterClass這四個註解。
@Before、 @After 是在每個測試方法測試的時候都會調用一次, @BeforeClass、 @AfterClass是在所有的測試方法測試之前與測試之後調用一次而已。
junit使用規範:
1. 一個類如果需要測試,那麼該類就應該對應着一個測試類,測試類的命名規範 : 被測試類的類名+ Test.
2. 一個被測試的方法一般對應着一個測試的方法,測試的方法的命名規範是: test+ 被測試的方法的方法名
*/
public class Demo1 {
@Test //註解
public void getMax(int a, int b){
/* int a = 3;
int b = 5 ;*/
int max = a>b?a:b;
System.out.println("最大值:"+max);
}
@Test
public void sort(){
int[] arr = {12,4,1,19};
for(int i = 0 ; i < arr.length-1 ; i++){
for(int j = i+1 ; j<arr.length ; j++){
if(arr[i]>arr[j]){
int temp = arr[i];
arr[i] = arr[j];
arr[j] = temp;
}
}
}
System.out.println("數組的元素:"+Arrays.toString(arr));
}
}
public class Demo2 {
//準備測試的環境
//@Before
@BeforeClass
public static void beforeRead(){
System.out.println("準備測試環境成功...");
}
//讀取文件數據,把把文件數據都
@Test
public void readFile() throws IOException{
FileInputStream fileInputStream = new FileInputStream("F:\\a.txt");
int content = fileInputStream.read();
System.out.println("內容:"+content);
}
@Test
public void sort(){
System.out.println("讀取文件數據排序..");
}
//清理測試環境的方法
// @After
@AfterClass
public static void afterRead(){
System.out.println("清理測試環境..");
}
}
public class Tool {
public static int getMax(){
int a = 3;
int b =5;
int max = a>b?a:b;
return max;
}
public static int getMin(){
int a = 3;
int b = 5;
int min = a<b?a:b;
return min;
}
}
//測試類
public class ToolTest {
@Test
public void testGetMax(){
int max = Tool.getMax();
if(max!=5){
throw new RuntimeException();
}else{
System.out.println("最大值:"+ max);
}
//斷言
//Assert.assertSame(5, max); // expected 期望 actual 真實 ==
// Assert.assertSame(new String("abc"), "abc");
// Assert.assertEquals(new String("abc"), "abc"); //底層是使用Equals方法比較的
// Assert.assertNull("aa");
// Assert.assertTrue(true);
}
@Test
public void testGetMin(){
int min = Tool.getMin();
if(min!=3){
throw new RuntimeException();
}else{
System.out.println("最小值:"+ min);
}
}
}