?測試
-
Junit入門
-
單元測試
-
單元測試:就是針對最小的功能單元(方法),編寫測試代碼對其正確性進行測試。
-
JUnit:最流行的Java測試框架之一,提供了一些功能,方便程序進行單元測試(第三方公司提供)。
通過main方法是可以進行測試的,可以測試程序是否正常運行。但是main方法進行測試時,會存在如下問題:
-
入門程序
需求:使用JUnit,對UserService中的業務方法進行單元測試,測試其正確性。
斷言?
package com.itheima;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;public class UserServiceTest {@Testpublic void testGetAge2(){Integer age = new UserService().getAge("110002200505091218");Assertions.assertNotEquals(18, age, "兩個值相等");
// String s1 = new String("Hello");
// String s2 = "Hello";
// Assertions.assertSame(s1, s2, "不是同一個對象引用");}@Testpublic void testGetGender2(){String gender = new UserService().getGender("612429198904201611");Assertions.assertEquals("男", gender);}
}
Junit常見注解
注意beforeAll和afterAll是靜態方法
參數化注解
package com.itheima;import org.junit.jupiter.api.*;
import org.junit.jupiter.params.ParameterizedTest;
import org.junit.jupiter.params.provider.ValueSource;@DisplayName("測試-學生業務操作")
public class UserServiceTest {@DisplayName("測試-獲取年齡")@Testpublic void testGetAge(){Integer age = new UserService().getAge("110002200505091218");System.out.println(age);}@DisplayName("測試-獲取性別")@Testpublic void testGetGender(){String gender = new UserService().getGender("612429198904201611");System.out.println(gender);}@DisplayName("測試-獲取性別3")@ParameterizedTest@ValueSource(strings = {"612429198904201611","612429198904201631","612429198904201626"})public void testGetGender3(String idcard){String gender = new UserService().getGender(idcard);System.out.println(gender);}
}
輸出?
?編寫測試方法時,要盡可能的覆蓋業務方法中所有可能得情況(尤其是邊界值)
依賴范圍
這樣junit包只能在test中使用?