【测试开发】Junit 框架

这篇具有很好参考价值的文章主要介绍了【测试开发】Junit 框架。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一. 认识 Junit

二. Junit 的常用注解

1. @Test

2. @Disabled

3. @BeforeAll

4. @AfterAll 

5. @BeforeEach

6. @AfterEach 

7. 执行测试

 三. 参数化

1. 引入依赖 

2. 单参数 

3. 多参数

3.1 通过CSV实现

3.2 通过方法实现 

4. 测试用例的执行顺序 

四. 断言

五. 测试套件 


一. 认识 Junit

Junit 是针对 Java 的一个单元测试框架,在上一篇文章中也介绍了 selenium ,它是自动化测试框架。

他们两者之间可以这样来认识:selenium是用来写自动化测试用例的技术,而Junit是用来管理已经编写好的测试用例的技术;

二. Junit 的常用注解

首先需要引入依赖:

 <!-- 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>
        </dependency>

1. @Test

@Test 注解用于方法上面,表示当前的方法是一个测试用例,通过@Test注释后的方法,不需要在main中,也可以直接运行。 

     @Test
     void Test01(){         // 此处要么不写,要么写 public,写别的就不被当成测试用例了
        System.out.println("这是 junit 里面的 test01");
    }

 2. @Disabled

 当使用 @Disabled 注释时,表示当前的测试用例不执行。

3. @BeforeAll

@BeforeAll 表示当前的测试用例在所有测试用例开始执行之前先执行。 

需要注意的是:@BeforeAll 注释的方法必须是静态的,只会执行一次。

联系到前面所学的自动化测试,我们通常可以将 创建驱动,打开网页的操作 放在此注解下。

4. @AfterAll 

@AfterAll 表示当前的测试用例在所有测试用例执行完之后再开始执行。

需要注意的是:@AfterAll 注释的方法必须是静态的,只会执行一次。

联系到前面所学的自动化测试,我们通常可以将 关闭浏览器 放在此注解下。

5. @BeforeEach

@BeforeEach 表示执行每一个测试用例之前,都会先执行一遍当前的方法。

6. @AfterEach 

@AfterEach 表示执行每一个测试用例之后,都会先执行一遍当前的方法。

7. 执行测试

根据上述的注解,可以观察以下代码的执行结果。 

public class JunitTest {
    
    @Test
     void Test01(){         // 此处要么不写,要么写 public,写别的就不被当成测试用例了
        System.out.println("这是 junit 里面的 test01");
    }

    @Disabled
        //类似于 @ignore 但是 @ignore 不属于junit,表示不执行
    void Test02(){
        System.out.println("不执行");
    }

    @BeforeAll              // 注意static修饰,在所有测试用例之前先执行
    static void Test03(){
        System.out.println("beforeAll");
    }

    @AfterAll               // 注意static修饰,在所有测试用例之后再执行
    static void Test04(){
        System.out.println("afterAll");
    }

    @BeforeEach
    void Test05(){
        System.out.println("执行 BeforeEach");
    }

    @AfterEach
    void Test06(){
        System.out.println("执行 AfterEach");
    }

    @Test
    void Test07(){         // 此处要么不写,要么写 public,写别的就不被当成测试用例了
        System.out.println("这是 junit 里面的 test07");
    }
}

【测试开发】Junit 框架,测试开发 ,junit

 三. 参数化

当执行测试用例的时候,有时候是需要进行参数化的。

主要使用注解:@ParameterizedTest    表示参数注册,也表示测试用例

注意:@ParameterizedTest 和 @Test 不能同时使用

1. 引入依赖 

<!-- 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>

2. 单参数 

单参数,指的是传递的参数类型是单种形式的。

主要使用注解:@ValueSource( 参数类型 )

参数类型可以有多种形式:

【测试开发】Junit 框架,测试开发 ,junit

    @ParameterizedTest               // 参数注册
    @ValueSource(ints = {1,2,3})    // 单参数:传递数据的类型是单种形式的
    void Test08(int num){
        System.out.println(num);    // 参数有三个,会执行三次
    }

 【测试开发】Junit 框架,测试开发 ,junit

3. 多参数

多参数,指的是传递的参数可以是多种类型的。 

3.1 通过CSV实现

首先可以使用 @CsvSource("参数") 可以将参数直接传入,可以传入多种类型的参数;

例如:@CsvSource(" 1,2,'你好' ");

    @ParameterizedTest
    @CsvSource({"1,2,'你好呀',''"})          // 此处可以将数据直接放入
    void Test01(int x,int y,String z,String q){
        System.out.println(x);          // 1
        System.out.println(y);          // 2
        System.out.println(z);          // 你好呀
        System.out.println(q);          // 空字符串
        System.out.println("============");
    }

也可以使用 @CsvFileSource(resource = "csv文件") 

这个方法一般会在resources路径下,创建一个 csv文件 ,将想要传入的参数写入 csv文件中即可 。每一次运行就对应 csv文件中的一行。

    @ParameterizedTest
    @CsvFileSource(resources = "test02.csv")
    void Test02(int num,String name){
        System.out.println(num + ":" + name);
    }

 【测试开发】Junit 框架,测试开发 ,junit

【测试开发】Junit 框架,测试开发 ,junit

3.2 通过方法实现 

通过 @MethodSource("方法名") 注解来实现,要构造方法名对应的方法 ,在对应的方法中,返回相应类型的参数。        

public static Stream<Arguments> Generator() {
        return Stream.of(Arguments.arguments(1,"张三"),
                Arguments.arguments(2,"李四"),
                Arguments.arguments(3,"王五")
        );
    }
    @ParameterizedTest
    @MethodSource("Generator")
    void Test11(int num,String name){
        System.out.println(num + ":" + name);
    }

【测试开发】Junit 框架,测试开发 ,junit

public static Stream<Arguments> Generate() {
        return Stream.of(Arguments.arguments("1,张三","2,李四","3,王五"));
    }
    @ParameterizedTest
    @MethodSource("Generate")
    void Test03(String numName1,String numName2,String numName3){
        System.out.println(numName1+"  "+numName2+"  "+numName3);
    }

【测试开发】Junit 框架,测试开发 ,junit

4. 测试用例的执行顺序 

当需要对测试用例进行顺序执行的时候,就需要到注解

@TestMethodOrder(MethodOrderer.OrderAnnotation.class)

不需要顺序执行就默认为:

@TestMethodOrder(MethodOrderer.Random.class)

应该注意的是:无顺序,并不是默认从上到下执行,此处的执行顺序是根据 Junit 的运行机制来的。

这两个注解是用在类上的;

然后还需要再对应的方法上加上注解 @Order() 来进行想要的执行顺序规定


 @TestMethodOrder(MethodOrderer.OrderAnnotation.class)       // 按顺序
 //@TestMethodOrder(MethodOrderer.Random.class)            // 无顺序( 不一定是从上到下,是根据junit的运行机制来的 )
public class JunitTest02 {
    @Order(2)
    @Test
    void Test01(){
        System.out.println("111");
    }
    @Order(1)
    @Test
    void Test02(){
        System.out.println("222");
    }
    @Order(4)
    @Test
    void Test03(){
        System.out.println("333");
    }
    @Order(3)
    @Test
    void Test04(){
        System.out.println("444");
    }
}

【测试开发】Junit 框架,测试开发 ,junit

 当不需要顺序执行的时候,可以看出也并不是从上到下执行的,验证了上述的内容:

【测试开发】Junit 框架,测试开发 ,junit

四. 断言

写自动化测试,结果要么是成功的,要么是失败的,不存在成功一半的情况。

那么就需要使用到断言:assert,断言预期结果真实结果是否一致。

主要用到的方法就是:

断言相等:Assertions.assertEquals(预期结果,实际值) -- 两者相等,测试通过

断言不相等:Assertions.assertNotEquals(预期结果,实际值) -- 两者不相等,测试通过

断言为空:Assertions.assertNull(参数) -- 参数为空,测试通过

断言不为空:Assertions.assertNotNull(参数) -- 参数不为空,测试通过

 以下代码都可以测试通过: 

public class JunitTest03 {
    @ParameterizedTest
    @ValueSource(ints = {1})
    void Test01(int num){
        System.out.println(num);
        Assertions.assertEquals(1,num);     // 等于 1 测试通过
        Assertions.assertNotEquals(2,num);      // 不等于 2 测试通过
        String str = "null";
        String str2 = null;
        Assertions.assertNull(str2);         // 值为空,则测试通过
        Assertions.assertNotNull(str);          // 值不为空,测试通过
    }
}

五. 测试套件 

测试套件,主要就是用于把想执行的测试用例执行起来。 

使用注解:@Suite作用于类上;

 需要引入依赖

<!--            测试套件-->
        <!-- 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>
            <scope>test</scope>
        </dependency>

 1. @SelectClasses({指定类}) 通过参数中指定对应的类,然后对类中的测试用例进行执行,此处又有后顺序;作用于类上

  2. @SelectPackages({"指定包"}) 通过参数中指定对应的包,然后对包中的测试用例进行执行,但是扫描的包不可以和当前的类在同一个包下面;作用于类上

【测试开发】Junit 框架,测试开发 ,junit 

 文章来源地址https://www.toymoban.com/news/detail-567907.html

到了这里,关于【测试开发】Junit 框架的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 单元测试框架——Junit5

    Junit是一个开源的用于Java语言的单元测试框架,也是Java方向使用最广泛的单元测试框架。 在pom.xml中引入Junit5相关依赖 @Test :表示一个方法/用例 BeforeEach :表示被注解的方法在其它所有方法执行前都要执行一遍,也就是说其它方法有3个它就要执行3遍 @BeforeAll :表示被注解的

    2024年02月11日
    浏览(44)
  • 自动化测试之JUnit单元测试框架

    目录 一、什么是 JUnit 二、JUnit5 相关技术 1.注解 1.1 @Test 1.2 @Disabled 1.3 @BeforeAll、@AfterAll 1.4 @BeforeEach、@AfterEach 2.参数化 2.1 单参数 2.2 CSV 获取参数 2.3 方法获取参数 2.4 多参数 3.测试用例的执行顺序 3.1 顺序执行:@TestMethodOrder(MethodOrderer.OrderAnnotation.class) 3.2 随机执行:@TestMetho

    2024年02月06日
    浏览(80)
  • idea 安装JUnit单元测试框架

    JUnit是一套专门用于java的单元测试框架,主要是测试方法 junit4官方网站: JUnit – About junit5官方网站:JUnit 5  框架依赖:junit-4.12.jar;hamcrest-core-1.3.jar 安装步骤: (1)项目中创建lib目录 (2)把两个jar文件复制到lib目录 (3)选择lib目录然后点击右键选择“Add as Library.....

    2024年02月07日
    浏览(44)
  • Android 单元测试框架 JUnit 4

    JUnit 4测试框架,它是Java中广泛使用的单元测试框架之一,使开发者能够编写可重复、可维护和可验证的测试。 单元测试是针对代码中的个别单元或组件进行测试,可以包括以下方面: 功能测试:测试代码单元是否按照预期执行功能。 边界测试:测试代码单元响应不同的边

    2024年02月15日
    浏览(47)
  • Junit5单元测试框架详解

    前面我们学习了Selenium自动化测试框架,但是有的时候测试用例会很多,我们需要一个工具来管理这些测试用例,而Junit就是一个很好的管理工具,简单点来说,Junit就是一个针对Java的单元测试框架; 目录 一. 关于Junit5 二. Junit使用 2.1 添加Maven依赖 2.2 注解 2.3 断言 2.4 套件

    2024年02月06日
    浏览(49)
  • 【单元测试】如何使用 JUnit5 框架?

      Junit5是一个用于在Java平台上进行单元测试的框架。JUnit 5 框架主要由三部分组成:JUnit Platform、JUnit Jupiter 和 JUnit Vintage。 JUnit Platform:定义了测试引擎的 API,是 JVM 上用于启动测试框架的基础服务,支持通过 IDE、构建工具、命令行等方式运行单元测试。 JUnit Jupiter:包含

    2024年04月10日
    浏览(46)
  • Java学习笔记——单元测试(JUnit框架)

    public class mathDemo { int area = 0; public int getArea(int a,int b){ area = a*b; return area; } } mathDemoTest类的代码 package UnitDemo; import UnitDemo.mathDemo; import org.junit.*; import static org.junit.Assert.*; public class mathDemoTest { mathDemo m = new mathDemo(); @BeforeClass public static void setUpClass(){ System.out.println(“在当前类的

    2024年04月26日
    浏览(42)
  • Java测试框架——JUnit详解(4&5)

    JUnit是Java编程语言的单元测试框架,用于编写和运行可重复的自动化测试,也是当下主流的Java测试框架 如果有对单元测试还不熟悉的小伙伴可以看一下我的这篇文章——浅谈单元测试,本文我们主要针对 JUnit 来讲解Java中的常用单元测试 关于JUnit4和5的区别可以参考这篇文章

    2024年01月17日
    浏览(35)
  • Day14:单元测试、Junit单元测试框架、反射、注解

    针对最小的功能单元(方法)进行正确性测试 编写正规的单元测试框架 传统的无法执行自动化测试,且无法得到测试报告 Junit的作用: 测试类取名:原类名+Test(大驼峰) 测试方法取名:test+原函数名称(小驼峰) 测试方法:必须public,无参,无返回值 测试方法上面必须加

    2024年04月14日
    浏览(63)
  • JUnit与Mockito测试框架使用指南

    JUnit是一个用于编写和运行测试的测试框架,是Java语言最流行的单元测试框架之一。 JUnit的作用是帮助开发人员编写高质量的代码。通过JUnit可以快速地自动化测试,减少手动测试成本,提高开发效率。 使用JUnit进行测试通常需要遵循以下步骤: 新建测试类(Test Class) 在测

    2024年02月10日
    浏览(51)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包