【软件测试】Junit单元测试框架 | 注解 | 参数化 | 测试套件

发布于:2024-07-03 ⋅ 阅读:(14) ⋅ 点赞:(0)


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"})

点击移步博客主页,欢迎光临~

偷cyk的图