目录
- 支持Java的最低版本为8
- 在pom.xml添加依赖
- Junit提供的注解功能
- 断言 Assertion类提供的一些方法
- 测试用例执行顺序 (为了预防测试用例执行顺序错误)
- 参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)
- 测试套件 (适用于跑测试类里面所有的测试用例)
-
此测试工具支持Java的最低版本为8
-
在pom.xml添加依赖
<dependency><groupId>org.junit.jupiter</groupId><artifactId>junit-jupiter</artifactId><version>5.8.2</version><scope>test</scope></dependency><dependency><groupId>org.junit.platform</groupId><artifactId>junit-platform-suite</artifactId><version>1.8.2</version><scope>test</scope></dependency>
-
Junit提供的注解功能
- @Test(表示方法是测试方法,可以自己去执行不需要调用,执行这个当前类时,会自动执行该类下所有带@Test注解的用例)
import org.junit.jupiter.api.Test; public class Test1 {@Testvoid test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");} } 打印 aaa bbb ccc
- @BeforeEach(当前方法需要在每一个用例执行前执行一次)
public class Test1 {@BeforeEachvoid test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");} }打印 aaa bbb aaa ccc
- @BeforeAll(需要静态方法,当前方法需要在所有用例执行前执行一次)
public class Test1 {@BeforeAll@Teststatic void test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");} } 打印: aaa bbb ccc
- @AfterEach(前方法需要在每一个用例执行后执行一次)
public class Test1 {@Teststatic void test1(){System.out.println("aaa");}@AfterEachvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");} } 打印:ccc bbb
- @AfterAll(需要静态方法,当前方法需要在当前类下所有用例之前执行一次)
public class Test1 {@AfterAll@Teststatic void test1(){System.out.println("aaa");}@Testvoid test2(){System.out.println("bbb");}@Testvoid test3(){System.out.println("ccc");} } 打印:bbb ccc aaa
-
断言 Assertion类提供的一些方法
- assertEquals---匹配
void dili1(){//启动驱动ChromeOptions options=new ChromeOptions();options.addArguments("--remote-allow-origins=*");ChromeDriver driver=new ChromeDriver(options);//输入网址driver.get("http://baidu.com");//打印百度一下String ret=driver.findElement(By.cssSelector("#su")).getAttribute("value");//打印文本System.out.println(ret);//断言一下Assertions.assertEquals("百度两下",ret);//退出程序driver.quit();} 、、此时程序会报错,与我们断言的不一致
- assertNotEquals---不匹配
Assertions.assertNotEquals("百度两下",ret);
- assertTrue---结果为真
- assertFalse---结果为假
Assertions.assertTrue(1==0);
- assertNull---结果为空
- assertNotNull---结果不为空
Assertions.assertNull("","你好");
-
测试用例执行顺序 (为了预防测试用例执行顺序错误)
注意:order只代表用例的执行顺序,Test注解不可以删除 ,否则程序不能执行
//写在类前面,代表当前类所有方法通过order注解来排序 @TestMethodOrder(MethodOrderer.OrderAnnotation.class) public class Test2 {//用例的执行顺序@Order(2)@Testvoid logintest(){System.out.println("logintest");}@Order(1)@Testvoid indextest(){System.out.println("indextest");}@Order(3)@Testvoid edittest(){System.out.println("edittest");} }
-
参数化 (假设登陆操作,用户名和密码很多,尽可能通过一个测试用例用一组参数来模拟用户登陆)
- 一般使用参数化注解就不能用@Test注解了
- 单参数,首先要声明方法为参数化方法@ParameterizedTest
@ParameterizedTest@ValueSource(strings = {"luncy,maty"})void single(String name){System.out.println(name);}
- 多参数
@ParameterizedTest@CsvSource({"lili,123434","xiaohau,22334","12233,xiaojia"})void many(String name,String age){System.out.println("name: "+name+"age: "+age);}
- 文件上传参数(从外部csv去读取)
- 动态参数方法来提供数据源
-
测试套件 (适用于跑测试类里面所有的测试用例)
- 先用@Suite来标注是测试套件
- 用@SelectClasses来指定要跑哪个测试类(注意这个测试类里面的方法都要加上@Test注解)
- 选择包名来执行对应的测试用例,(该包下的所有测试类命名必须以Test/Tests结尾)