【软件测试】Junit单元测试框架 | 注解 | 参数化 | 测试套件
文章目录
- Junit单元测试框架
- 1.注解
- @Test
- @Disable
- @BeforeAll、@AfterAll
- @BeforeEach、@AfterEach
- 2.参数化
- 单参数
- CSV获取参数
- 多参数
- 方法获取参数
- 测试用例执行顺序
- 断言
- 3.测试套件
- 通过class运行测试用例
- 通过包来运行测试用例
Junit单元测试框架
Selenium3是自动化测试框架
Junit5是单元测试框架
- Junit是针对Java的一个单元测试框架
1.注解
@Test
- 表示当前的方法是一个测试用例
需要先添加依赖
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-api -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-api</artifactId><version>5.9.1</version><scope>test</scope>
</dependency>
public class JunitTest {@Testpublic void Test01(){System.out.println("学习Junit,Test01");}@Testvoid Test02(){System.out.println("Test02");}
}
@Disable
- 忽略测试用例,直接跳过
@Disabledvoid Test03() {WebDriver webDriver = new ChromeDriver();webDriver.get("https://www.baidu.com/");webDriver.findElement(By.cssSelector("#s-top-left111 > a:nth-child(6)"));}
@BeforeAll、@AfterAll
@BeforeAll//在所有的测试用例之前(比如创建驱动、打开网页)static void SetUp(){System.out.println("BeforeAll");}@AfterAll//在所有的测试用例之后(比如关闭浏览器)static void TearDown(){System.out.println("AfterAll");}
@BeforeEach、@AfterEach
@BeforeEach//在每个测试用例之前执行void BeforeEachTest(){System.out.println("BeforeEach");}@AfterEach//在每个测试用例之后执行void AfterEachTest(){System.out.println("AfterEach");}
2.参数化
parameterized tests
需要引入依赖
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-params -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-params</artifactId><version>5.9.1</version>
</dependency>
单参数
@ParameterizedTest@ValueSource(ints = {1,2,3})void Test04(int num){System.out.println(num);}@ParameterizedTest@ValueSource(strings = {"A","B","C"})void Test05(String number){System.out.println(number);}
会跑三次,每次拿一个数据
CSV获取参数
@ParameterizedTest@CsvFileSource(resources = "test01.csv")void Test06(String name){System.out.println(name);}
csv文件
张三,李四,王五
张三2,李四2,王五2
张三3,李四3,王五3
运行几次,取决于csv有几行
多参数
@ParameterizedTest@CsvSource({"1,2,3, ''"})void Test10(String x,String y ,int z ,String q){System.out.println(x);System.out.println(y);System.out.println(z);System.out.println(q);}
方法获取参数
@ParameterizedTest@MethodSource("Generator")void Test07(int num,String name){System.out.println(num+":"+name);}public static Stream<Arguments> Generator() {return Stream.of(Arguments.arguments(1,"张三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));}
测试用例执行顺序
执行指定的顺序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
//按照指定顺序执行@Order(4)@Testpublic void Test01() {System.out.println("学习Junit,Test01");}
@TestMethodOrder(MethodOrderer.Random.class)
//随机执行
断言
断言相等
@ParameterizedTest@ValueSource(ints = {1,2,3})void Test04(int num){System.out.println(num);Assertions.assertEquals(num,1);}
断言不相等
Assertions.assertNotEquals(2,num);
断言为空
String str = null;Assertions.assertNull(str);String str = "null111";Assertions.assertNull(str);
断言不为空
Assertions.assertNotNull(str);
3.测试套件
<!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform-suite -->
<dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.9.1</version>
</dependency>
<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter-engine</artifactId><version>5.9.1</version>
</dependency>
通过class运行测试用例
@Suite
@SelectClasses({JunitTest.class,JunitTest01.class})
//按照类写的顺序依次执行
public class RunSuite {}
通过包来运行测试用例
@Suite
@SelectPackages(value = {"package01","package02"})
点击移步博客主页,欢迎光临~