Junit+Selenium 自动化测试

2024-03-18 1165阅读

温馨提示:这篇文章已超过432天没有更新,请注意相关的内容是否还可用!

一.注解

• @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的内容");
    }
}

执行结果:

Junit+Selenium 自动化测试

二.参数化

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

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

 Junit+Selenium 自动化测试

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 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,);*/
    }

三.测试套件

依赖:

     
        
            org.junit.platform
            junit-platform-suite
            1.9.1
            test
            
    
        
        
            org.junit.jupiter
            junit-jupiter-engine
            5.9.1
            test
        
        
            org.junit.platform
            junit-platform-suite-api
            1.9.1
        
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 {
}
VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]