单元测试Junit使用与详解

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

一、什么是单元测试
在平时的开发当中,一个项目往往包含了大量的方法,可能有成千上万个。如何去保证这些方法产生的结果是我们想要的呢?当然了,最容易想到的一个方式,就是我们通过System.out来输出我们的结果,看看是不是满足我们的需求,但是项目中这些成千上万个方法,我们总不能在每一个方法中都去输出一遍嘛。这也太枯燥了。这时候用我们的单元测试框架junit就可以很好地解决这个问题。Junit是一个单元测试框架。

二、使用
注意:用Junit进行单元测试必须满足以下条件:
1、每一个测试方法上使用@Test进行修饰
2、每一个测试方法必须使用public void 进行修饰
3、每一个测试方法不能携带参数
4、测试代码和源代码在两个不同的项目路径下
5、测试类的包应该和被测试类保持一致
6、测试单元中的每个方法必须可以独立测试

1.Junit的jar包导入
如果不是maven项目,直接网上下载junit的jar包,如果是maven项目,直接导入maven依赖,版本改成自己需要。但是要注意,4.10以上版本的junit要配合hamcrest-core的jar包使用。

2.Junit简单使用

import org.junit.*;

public class Tests {
   @Test
    public void testAdd(){
       System.out.println("test1");
    }
}


左击方法名,点击运行按钮,选择debug模式,运行结果如图

单元测试Junit使用与详解
3.对方法进行断言测试
这里写了三个方法,主要对以下方法用断言进行测试,代码如下

public class Method {
    public int add(int a,int b){
        return a+b;
    }
    public int delete(int a,int b){
        return a-b;
    }
    public boolean isTrue(){
        return 2==1;
    }
}

- 1、assertEquals
断言判断是否相等,这个方法里面可以又很多参数,一般根据我们的需要输入相应的参数

单元测试Junit使用与详解 

在这里选择assertEquals(Object expected,Object actual),expected指的是期望得到的值,actual指实际返回的结果,如果期望值和实际结果不相等,就会抛异常,即断言失败。我们对add方法进行测试,代码如下

public class Tests {
   @Test
    public void testAdd(){
        Assert.assertEquals(3,new Method().add(3,1));
       System.out.println("test1");
    }
    }

输入值和期望值不一样,这里抛出异常

单元测试Junit使用与详解
- 2、assertTrue/assertFalse
该断言用来验证给定的布尔型值是否为真,假如结果为假,则验证失败。
方法: assertTrue ([String message],Boolean condition)
message是个可选的消息,假如提供,将会在发生错误时报告这个消息。
这里测试isTrue方法,测试代码如下:

public class Tests {
   @Test
    public void testTrue(){
        Assert.assertTrue("不相等",new Method().isTrue());
       System.out.println("test1");
    }
    }

很明显,测试代码里面返回的是false,所以会抛出message消息

assertFalse方法同上,只是判断的结果相反,如果boolean中返回为false则不抛异常,返回为true抛出message消息。

单元测试Junit使用与详解

- 3、assertNull
这个方法很好理解,就不写专用的方法来进行演示。用于判断函数返回是否为空
方法:assertNotNull([String message],Object object)
message即返回为空之后的打印的消息,object是判断的方法
测试代码如下:

public class Tests {
   @Test
    public void testTrue(){
        Assert.assertNull("不为空","abcde");
       System.out.println("test1");
    }
    }


测试结果:如果判断的对象不为空,则会抛出message消息,为空则通过测试

单元测试Junit使用与详解
- 4、assertSame
 该断言用来验证expected参数和actual参数所引用的是否是同一个对象,假如不是,则验证失败。相应地,也存在验证不是同一个对象的断言。(和assertEquals区别在于,这个用于判断实际结果是否与期望结果的引用内存地址相同,类似于==,而assertEquals类似于equals方法)
 方法:assertNotSame ([String message], expected,actual)
 message也是断言失败后打印的消息,expected是期望值,actual是实际值
 测试代码:

public class Tests {
   @Test
    public void testTrue(){
        Assert.assertSame("不相等",2,4-3);
       System.out.println("test1");
    }
    }


测试结果:2肯定是不等于1的,这个时候会打印错误信息。

单元测试Junit使用与详解
4.运行流程
如果我们要在每个测试之前打开数据库,又关闭数据库,这样如果在每个方法里面写流程会非常麻烦,这个时候就有专有的测试方法运行前后进行操作的方法。其中beforeClass和afterClass方法必须是静态方法。
@BeforeClass (setUpBeforeClass方法):
注解静态方法;在运行测试类时最先运行且只执行一次。
@AfterClass (tearDownAfterClass方法):
注解静态方法;在运行测试类时最后个运行且只执行一次。
@Before(setUp方法)
在执行每个@Test之前执行,每个@Test执行前都会执行@Before。
@Test
要执行的测试单元
@After(tearDown方法)
在执行每个@Test之后执行,每个@Test执行结束后都会执行@After

public class Tests {
   @Test
    public void testAdd(){
       System.out.println("test1");
    }
    @Test
    public void testDelete(){
        System.out.println("test2");
    }
    @BeforeClass
    public static void beforeClass(){
        System.out.println("beforeClass.....");
    }
    @After
    public void after(){
        System.out.println("after......");
   }
    @AfterClass
    public static void afterClass(){
       System.out.println("afterClass....");
   }
    @Before
    public void before(){
        System.out.println("before.....");
    }
    }

打印结果:

单元测试Junit使用与详解

这里我们可以看到它的运行流程是这样的:

单元测试Junit使用与详解


5.junit测试套件(批量测试)
有的时候我们可能不止要对一个类进行测试,这个时候就要用到测试套件,两个测试类如下
Tests:

public class Tests {
   @Test
    public void testAdd(){
       System.out.println("test1");
    }
    }

Tests1

import org.junit.Test;

public class Tests1 {
    @Test
    public void testDelete(){
        System.out.println("test2");
    }
}

套件类Combine:

import org.junit.runner.RunWith;
import org.junit.runners.Suite;

@RunWith(Suite.class)//用于更改测试运行器
@Suite.SuiteClasses({Tests.class,Tests1.class})//将要测试的类作为数组传入到@Suite.SuiteClasses({})中
public class Combine {
	/**
	注意,该类中不要写任何代码
	**/
}


直接点击类名进行Debug
运行结果如图:

单元测试Junit使用与详解 

是不是特别方便呢,可以多个类一起进行测试,学会以上这些可以使用junit对方法进行测试,但是具体需要测试的业务和逻辑要根据实际情况来编写。文章来源地址https://www.toymoban.com/news/detail-433519.html

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

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

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

相关文章

  • 【软件测试】单元测试工具---Junit详解

    JUnit是一个Java语言的单元测试框架。 虽然我们已经学习了selenium测试框架,但是有的时候测试用例很多,我们需要一个测试工具来管理这些测试用例,Junit就是一个很好的管理工具,简单来说Junit是一个针对Java单元测试的框架。Junit由Junit Platform _ Junit Jupiter + junit Vintage3部分组

    2024年02月15日
    浏览(32)
  • JUnit5-单元测试操作详解

    JUnit 5是JUnit测试框架的下一个主要版本,用于编写和运行单元测试。 与以前版本的 JUnit 不同,JUnit 5 由来自三个不同子项目的多个不同模块组成。 JUnit 5 =  JUnit 平台 +  JUnit Jupiter  +  JUnit Vintage JUnit 平台 是在 JVM 上启动测试框架的基础。它还定义了 TestEngine 用于开发在平台

    2024年04月10日
    浏览(45)
  • Junit5单元测试框架详解

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

    2024年02月06日
    浏览(36)
  • Junit5+Mockito单元测试详解

    1.宏观层面:AIR原则 A:Automatic(自动化) 全自动执行,输出结果无需人工检查,而是通过断言验证。 I:Independent(独立性) 分层测试,各层之间不相互依赖。 R:Repeatable(可重复) 可重复执行,不受外部环境( 网络、服务、中间件等)影响。 2.微观层面:BCDE原则 B: Bord

    2024年01月17日
    浏览(37)
  • 详解JUnit单元测试框架(打桩测试待更新)示例代码有格式问题,待更新

    单元测试负责对最小的软件设计单元(模块)进行验证,根据软件设计文档中对模块功能的描述,对重要的程序分支进行测试并发现错误。 对于单元测试框架来讲,它主要完成以下几件事。 提供用例组织与执行: 测试用例只有几条时,可以不考虑用例组织,但是用例达到成

    2024年02月05日
    浏览(41)
  • 使用JUnit单元测试

    前提:   测试题目: 根据输入的年份和月份判断月份的天数。若月份不在有效范围之内,应提示:“月份输入不正确。”。月份不为2月,根据输入月份输出对应的月份天数。月份为2月,根据年份判断如为普通闰年,输出2月份正确天数;如为世纪闰年,输出2月份正确天数;

    2024年02月04日
    浏览(23)
  • 单元测试工具——JUnit的使用

    ⭐️ 前言 ⭐️ 本篇文章主要介绍单元测试工具JUnit的使用。 🍉 欢迎点赞 👍 收藏 ⭐ 留言评论 📝 私信必回哟 😁 🍉 博主将持续更新学习记录收获,友友们有任何问题可以在评论区留言 🍉 博客中涉及源码及博主日常练习代码均已上传GitHub JUnit提供了非常强大的注解功能

    2024年02月02日
    浏览(35)
  • Junit4单元测试的使用

    导入Junit4依赖 要使用单元测试,首先我们得在项目中导入Junit4的jar包。 普通导入方式 ,在项目目录下创建一个lib文件夹,然后将Junit4的jar复制进来,然后右键点击Add as Library 将jar设为依赖。 在这里插入图片描述 Maven项目导入方式 ,在maven的配置文件pom.xml直接添加依赖坐标

    2024年02月13日
    浏览(32)
  • 使用Junit进行单元测试的简单例子

    首先新建一个工程,选择合适的路径和JDK版本,其它默认就行。 把Main.java内容改为如下。    后面就是对add方法增加单元测试 在project窗口中右击项目,在菜单中选择:New - Directory 在弹出的提示框中输入目录名:test 。 然后右击 project窗口中 test 目录,在弹出菜单中选择:

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

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

    2024年04月10日
    浏览(38)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包