ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

关于JUnit

2022-05-15 17:00:28  阅读:141  来源: 互联网

标签:断言 打印 单元测试 测试用例 关于 测试 msg JUnit


目录

一、单元测试

二、在LAB中的常用方法

 

一、单元测试

什么是单元测试呢?单元测试就是针对最小的功能单元编写测试代码。Java程序最小的功能单元是方法,因此,对Java程序进行单元测试就是针对单个Java方法的测试。

单元测试有什么好处呢?在学习单元测试前,我们可以先了解一下测试优先的编程。

所谓测试优先的编程,是指先编写接口,紧接着编写测试。编写完测试后,我们才开始真正编写实现代码。在编写实现代码的过程中,一边写,一边测,什么时候测试全部通过了,那就表示编写的实现完成了:

这就是TDD(Test-driven development)

那么我们为什么要单独编写测试代码,而不是像学c语言的时候一样,在main()中输出,观察结果是否是自己想要的呢?因为这有以下的缺点:

1. 只有一个main()函数,不能把测试代码分离

2. 没有输出测试结果和期望结果,只能和自己记在本本上的数据进行比对

3. 很难编写一组通用的代码

Java给出了用于测试的框架,也就是JUnit。

JUnit是一个开源的Java语言的单元测试框架,专门针对Java设计,使用最广泛。JUnit是事实上的单元测试的标准框架,任何Java开发者都应当学习并使用JUnit编写单元测试。

使用JUnit编写单元测试的好处在于,我们可以非常简单地组织测试代码,并随时运行它们,JUnit就会给出成功的测试和失败的测试,还可以生成测试报告,不仅包含测试的成功率,还可以统计测试的代码覆盖率,即被测试的代码本身有多少经过了测试。对于高质量的代码来说,测试覆盖率应该在80%以上。

 

 

二、在LAB中的常用方法

 

上一个博客已经给出如何使用JUnit功能,这次来说说需要掌握哪些知识可以应对LAB。

一个测试方法的代码大概应该是这样的

import static org.iunit.Assert.*;
import org.junit.Test;

public class FactorialTest {    @Test public void factTest() { assertEquals(1, Factorial.fact(1)); assertEquals(2, Factorial.fact(2)); assertEquals(6, Factorial.fact(3)); assertEquals(3628800, Factorial.fact(10)); assertEquals(2432902008176640000L, Factorial.fact(20)); } }

 命名一般都是对应方法和类名后面加Test,必须是public void,测试方法前要加注解@Test,表明这是测试方法。

assertEquals(expected, actual)

 是最常见的方法,用来比较返回值和期望值是否相同。还有其他方法,比如

assertEqual(a,b,[msg='测试失败时打印的信息'])                   // 断言a和b是否相等,相等则测试用例通过。

assertNotEqual(a,b,[msg='测试失败时打印的信息'])             //断言a和b是否相等,不相等则测试用例通过。

assertTrue(x,[msg='测试失败时打印的信息'])                        //断言x是否True,是True则测试用例通过。

assertFalse(x,[msg='测试失败时打印的信息'])                      //断言x是否False,是False则测试用例通过。

assertIs(a,b,[msg='测试失败时打印的信息'])                         //断言a是否是b,是则测试用例通过。

assertNotIs(a,b,[msg='测试失败时打印的信息'])                   //断言a是否是b,不是则测试用例通过。

assertIsNone(x,[msg='测试失败时打印的信息'])                   //断言x是否None,是None则测试用例通过。

assertIsNotNone(x,[msg='测试失败时打印的信息'])             //断言x是否None,不是None则测试用例通过。

assertIn(a,b,[msg='测试失败时打印的信息'])                       //断言a是否在b中,在b中则测试用例通过。

assertNotIn(a,b,[msg='测试失败时打印的信息'])                  //断言a是否在b中,不在b中则测试用例通过。

assertIsInstance(a,b,[msg='测试失败时打印的信息'])          //断言a是是b的一个实例,是则测试用例通过。

assertNotIsInstance(a,b,[msg='测试失败时打印的信息'])    //断言a是是b的一个实例,不是则测试用例通过。

 

这些方法都在

org.junit.Assert;

这个包里

使用浮点数时,由于浮点数无法精确地进行比较,因此,我们需要调用

assertEquals(double expected, double actual, double delta)

这个重载方法,指定一个误差值:

assertEquals(0.1, Math.abs(1 - 9 / 10.0), 0.0000001);

 

 

 

标签:断言,打印,单元测试,测试用例,关于,测试,msg,JUnit
来源: https://www.cnblogs.com/MSAling/p/16273639.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有