Junit+Selenium 自动化测试

2023-12-18 20:38:37

一.注解

? @Test:标记一个测试用例

? @Disable:忽略此条测试用例

? @BeforeAll:在所有用例执行前先执行

? @AfterAll:在所有用例执行后再执行

? @BefortEach :在每个测试用例执行前执行

? @AfterEach:在每个测试用例执行后执行

public class Test1 {
    @Test
    public void test01(){
        System.out.println("这是test01中的数据");
    }
    @Test
    void test02(){
        System.out.println("这是test02中的数据");
    }
    @Disabled
    void test03(){
        System.out.println("这是test03中的数据");
    }
    @AfterAll
    static void test04(){
        System.out.println("这是afterAll的内容");
    }
    @BeforeAll
    static void Test05(){
        System.out.println("这是beforeAll的内容");
    }
    @BeforeEach
    void test06(){
        System.out.println("这是BeforeEach的内容");
    }
    @AfterEach
    void test07(){
        System.out.println("这是AfterEach的内容");
    }
}

执行结果:

二.参数化

此时也是要导入新的依赖:

Maven Repository: org.junit.jupiter ? junit-jupiter-params ? 5.9.3 (mvnrepository.com)

2.1 单参数

    @ParameterizedTest
    @ValueSource(ints = {1,2,3})
    void test01(int n){
        System.out.println(n);
    }
    @ParameterizedTest
    @ValueSource(strings ="1")
    void test02(String s){
        System.out.println(s);
    }

?

2.2?CSV获取参数

/*  张三,李四 
    张三2,李四2
    张三3,李四3*/
    @ParameterizedTest
    //在resources中创建一个同名文件,文件每一行一次测试的内容,测试用例可根据参数类型自动匹配
    @CsvFileSource(resources = "/name.csv")
    void test03(String n,String s){
        System.out.println(n+","+s);
    }

    @ParameterizedTest
//空字符串使用''来传递
    @CsvSource({"1,张三","2,李四","3,''"})
    void test05(int n,String name){
        System.out.println(n+","+name);
    }

2.3?方法获取参数

    public static Stream<Arguments> generator(){
        return Stream.of(Arguments.arguments(1,"张三"),Arguments.arguments(2,"李四"),Arguments.arguments(3,"王五"));
    }
//    @Test
//    @Test不能与@ParameterizedTest一同使用,两者会产生冲突
    @ParameterizedTest
    @MethodSource("generator")
    void Test04(int num,String name){
        System.out.println(num+" "+name);
    }

2.4?执行顺序

在项目中,测试的各方法的执行顺序不是自上而下的

/*指定每个方法的执行顺序
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)*/

    //随机执行,但是仍可以通过@Order来执行
    @TestMethodOrder(MethodOrderer.Random.class)
public class JOrder {
    //@Order(2)
    @Test
    void B(){
        System.out.println("b");
    }
    //@Order(1)
    @Test
    void A() {
        System.out.println("a");
    }
    //@Order(3)
    @Test
    void test01(){
        System.out.println("test01");
    }
    //@Order(4)
    @Test
    void test02(){
        System.out.println("test02");
    }
}

2.5 断言

    @ParameterizedTest
    @ValueSource(strings ="1")
    void test02(String s){
//        Assertions.assertEquals("1",s);
//        Assertions.assertNotEquals("2",s);
        String str=null;
        Assertions.assertNull(str);
       /* String str="string";
       Assertions.assertNotNull(str,);*/
    }

三.测试套件

依赖:

     <!-- 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>    
    <!--suite 需要engine-->
        <!-- 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>
            <scope>test</scope>
        </dependency>

        <dependency>
            <groupId>org.junit.platform</groupId>
            <artifactId>junit-platform-suite-api</artifactId>
            <version>1.9.1</version>
        </dependency>
package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;

public class Test1 {
    @Test
    void test01(){
        System.out.println("junit_Sele/pakage1/test1");
    }
}


package junit_Sele.pakage1;
import org.junit.jupiter.api.Test;

public class Test2 {
    @Test
    public void Test2(){
        System.out.println("junit_Sele/pakage1/test2");
    }
}


package junit_Sele.pakage2;
import org.junit.jupiter.api.Test;

public class Test1 {
    @Test
    void test01(){
        System.out.println("junit_Sele/pakage2");
    }
}
@Suite
//指定同一个包中的不同类运行的顺序
//@SelectClasses({JAssert.class, JOrder.class,Para.class})
//指定一个包中不同类运行的顺序
@SelectPackages(value = {"junit_Sele.pakage1", "junit_Sele.pakage2"})
//指定一个包的同时指定包内的类的运行顺序
@SelectClasses({junit_Sele.pakage1.Test1.class,junit_Sele.pakage1.Test2.class})
public class RunSuite {
}

文章来源:https://blog.csdn.net/weixin_70564024/article/details/134654563
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。