文章目录
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 {
@Test
public void Test01(){
System.out.println("学习Junit,Test01");
}
@Test
void Test02(){
System.out.println("Test02");
}
}
@Disable
- 忽略测试用例,直接跳过
@Disabled
void 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)
@Test
public 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"})