Js 面向对象 动态添加标签页
赞
踩
赞
踩
目录
1)按照Class执行,想要执行哪些类下的测试用例,就写在value后面
Junit 是针对Java的单元测试框架
和Selenium的区别
Selenium是自动化测试框架,用来编写测试用例的
Junit是单元测试框架,用来管理测试用例
举例:
把Selenium当做一个灯泡,如何控制开关,通过Junit来控制,Junit在这里就相当于开关
在Maven Repository中找Junit的依赖
- //版本自己确定,但是都必须是一样的!!!
- //1. JUnit Jupiter API
-
- <!-- 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>
-
- //2.JUnit Jupiter (Aggregator)
-
- <!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter -->
- <dependency>
- <groupId>org.junit.jupiter</groupId>
- <artifactId>junit-jupiter</artifactId>
- <version>5.9.1</version>
- <scope>test</scope>
- </dependency>
-
- //3.JUnit Jupiter Params
-
- <!-- 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>
- <scope>test</scope>
- </dependency>
-
- //4. JUnit Platform Suite (Aggregator)
- Module "junit-platform-suite" of JUnit 5.
-
- <!-- 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>
- <scope>test</scope>
- </dependency>
-
- <dependency>
- <groupId>org.junit.platform</groupId>
- <artifactId>junit-platform-suite-api</artifactId>
- <version>1.9.1</version>
- </dependency>
-
-
测试方法,通过@Test注解的方法不放在main方法中就可以直接运行
- import org.junit.jupiter.api.*;
-
- public class TestJunit {
-
- @BeforeAll
- static void SetUp() {
- System.out.println("开始执行测试用例");
- }
-
- @BeforeEach
- void before(){
- System.out.println("BeforeEach注解的方法开始执行");
- }
-
- @AfterEach
- void after(){
- System.out.println("AfterEach注解的方法开始执行");
- }
-
-
- @Test
- void Test01() {
- System.out.println("这是测试用例一");
- }
-
-
- @Test
- void Test02() {
- System.out.println("这是测试用例二");
- }
-
- @AfterAll
- static void TearDown() {
- System.out.println("结束");
- }
-
- }
@BeforeAll: 所有的测试用例执行之前执行对应方法里面的语句
@AfterAll: 所有的测试用例执行结束之后执行对应方法里面的语句
@BeforeEach: 每一个测试用例执行之前执行对应方法里面的语句
@AfterEach: 每一个测试用例执行结束之后执行对应方法里面的语句
- 开始执行测试用例
-
- BeforeEach注解的方法开始执行
- 这是测试用例一
- AfterEach注解的方法开始执行
-
- BeforeEach注解的方法开始执行
- 这是测试用例二
- AfterEach注解的方法开始执行
-
- 结束
在测试用例上注释Disable,禁用此测试用例
- @Test
- @Disabled
- void Test02() {
- System.out.println("这是测试用例二");
- }
-
- //执行结果
- void org.Junit.TestJunit.Test02() is @Disabled
测试用例的执行顺序不是按照代码写的顺序执行的,是按照默认顺序执行的
在类上注释@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
之后在每个测试用例上自定义顺序@Order(n)
- @TestMethodOrder(MethodOrderer.OrderAnnotation.class)
- public class Test1 {
-
- @Order(4)
- @Test
- void Test04() {
- System.out.println("===============这是第四条测试用例===========");
- }
-
-
- @Order(2)
- @Test
- @Disabled
- void Test02() {
- System.out.println("===============这是第二条测试用例===========");
- }
-
-
- @Order(3)
- @Test
- void Test03() {
- System.out.println("===============这是第三条测试用例===========");
- }
-
-
- @Order(1)
- @Test
- void Test01() {
- System.out.println("==========这是第一条测试用例===========");
- }
- }
在类上注释@TestMethodOrder(MethodOrderer.Alphanumeric.class)
之后会按照测试用例方法名在ASCII表上的顺序去执行
判断测试用例是否通过
使用Assertions下的方法
Assertions.assertEquals(预期结果,实际结果); ---断言相等 Assertions.assertNotEquals(预期结果,实际结果); ---断言不相等
- @Test
- void Test01() {
- System.out.println("这是测试用例一");
- String str1 = "abc";
- String str2 = "abd";
- Assertions.assertEquals(str1,str2);
- }
-
- //执行结果
- org.opentest4j.AssertionFailedError:
- Expected :abc
- Actual :abd
Assertions.assertNull(a); ---断言为空
Assertions.assertNotNull(a); ---断言不为空
- @ParameterizedTest
- @ValueSource(strings = {"abc", "你好"})
- void paramTest(String str){
- System.out.println(str);
- }
- @ParameterizedTest
- @CsvSource(value = {"小明,18", "小张,17"})
- void paramTest2(String name, int age) {
- System.out.println("name :" + name + ",age :" + age);
- }
当数据量过大时,就不适合用上面的方式
在对应的resource目录下创建对应的csv文件,在内部写入数据
- @ParameterizedTest
- @CsvFileSource(resources = "test.csv")
- void paramTest3(int age,String name) {
- System.out.println("name :" + name + ", age :" + age);
- }
如果数据需要随时去获取的时候
- public static Stream<Arguments> Generator() {
- return Stream.of(
- Arguments.arguments(1,"甲"),
- Arguments.arguments(2,"乙"),
- Arguments.arguments(3,"丙")
- );
- }
- //多参数3 --通过方法获取数据
- @ParameterizedTest
- @MethodSource("Generator")
- void paramTest4(int age,String name) {
- System.out.println("name :" + name + ", age :" + age);
- }
控制器,控制哪个类的测试用例或者包下的测试用例去运行
- //按照类
- @Suite
- @SelectClasses(value = {TestJunit.class})
- public class testController {
- }
- //按照包
- @Suite
- @SelectPackages(value = {"org.Junit"})
- public class testController {
- }
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。