Java:IDEA下使用JUNIT

单元测试的基本使用

一、环境配置

     使用idea IDE 进行单元测试,首先需要安装JUnit 插件。

       1.安装JUnit插件步骤

              File-->settings-->Plguins-->Browse repositories-->输入JUnit-->选择JUnit Generator V2.0安装。

          2.使用JUnit插件

             在需要进行单元测试的类中,使用快捷键alt+insert,选择JUnit test,选择JUnit4。

二、单元测试

代码Demo:

  @Testpublic void testAdd() {assertEquals(2, new UserDao().add(1, 1));}

1>注意事项:

    1、测试方法上面必须使用@Test注解进行修饰。

    2、测试方法必须使用public void 进行修饰,不能带有任何参数。

    3、新建一个源代码目录用来存放测试代码。

    4、测试类的包应该与被测试类的包保持一致。

    5、测试单元中的每一个方法必须独立测试,每个测试方法之间不能有依赖。

    6、测试类使用Test做为类名的后缀(非必要)。

    7、测试方法使用test作为方法名的前缀(非必要)。

2>错误解析:

    1、Failure 一般是单元测试使用的断言方法判断失败引起,说明预期结果和程序运行结果不一致。

    2、error 是有代码异常引起的,他产生于测试代码本身中的Bug。

    3、测试用例是不是用来证明你是对的,而是用来证明你没有错。

3>测试流程:

代码Demo:    

复制代码
复制代码
    @BeforeClasspublic static void setUpBeforeClass() throws Exception {}@AfterClasspublic static void setUpAfterClass() throws Exception {}@Beforepublic void before() throws Exception {}@Afterpublic void after() throws Exception {}
复制代码
复制代码

      1、@BeforeClass所修饰的方法在所有方法加载前执行,而且他是静态的在类加载后就会执行该方法,

         在内存中只有一份实例,适合用来加载配置文件。

      2、@AfterClass所修饰的方法在所有方法执行完毕之后执行,通常用来进行资源清理,例如关闭数据库连接。

      3、@Before和@After在每个测试方法执行前都会执行一次。

4>常用注解

      1、@Test(excepted=XX.class) 在运行时忽略某个异常。

      2、@Test(timeout=毫秒) 允许程序运行的时间。

      3、@Ignore 所修饰的方法被测试器忽略。

      4、RunWith 可以修改测试运行器 org.junit.runner.Runner

5>测试套件

      测试套件是组织测试类一起运行的测试类。具体如下:

代码Demo:

@RunWith(Suite.class)
@Suite.SuiteClasses({UserTest1,UserTest2,UserTest3})
public class SuiteTest{}

  注意事项:

      1、作为测试套件的入口类,类中不能包含任何方法。

      2、更改测试运行器Suite.class。

      3、将需要运行的测试类放入Suite.SuiteClasses({})的数组中。

6>参数化设置

      需要测试的仅仅是测试数据,代码结构是不变的,只需要更改测试数据。

代码Demo:    

复制代码
复制代码
@RunWith(Parameterized.class)
public class parameterTest {int expected = 0;int input1 = 0;int input2 = 0;@Parameterspublic static Collection<Object[]> t() {return Arrays.asList(new Object[][]{{3,1,2},{5,2,3}});}public parameterTest(int expected,int input1,int input2) {this.expected = expected;this.input1 = input1;this.input2 = input2;}@Testpublic void testAdd() {assertEquals(expected, UserDao.add(input1,input2));}}
复制代码
复制代码

    具体步骤:

        1、更改默认的测试运行器为@RunWith(Parameterized.class)。

        2、声明变量来存放预期值和测试值。

        3、声明一个返回值为Collection的公共静态方法,并用@Parameters修饰。

        4、为测试类声明一个带有参数的公共构造函数,并在其中为他声明变量赋值。

以上为基于IntelliJ IDEA 进行的单元测试。

转载于:https://www.cnblogs.com/chenliyang/p/6553074.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429536.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

arcore之路-unity开发从入门到实践_Unity游戏开发——单例模式的最佳实践

0.前言StarryFun&#xff1a;Unity游戏开发——关于单例模式的理解​zhuanlan.zhihu.com之前一篇文章讲了单例模式的简单理解&#xff0c;自知其中有很多不严谨的地方&#xff0c;由于本萌新也是在学习阶段&#xff0c;所以去翻看了开源的项目都是怎么实现的&#xff0c;发现了…

压控元器件和流控元器件

压控元器件&#xff1a;通过电压控制器件是否工作&#xff0c;常见的有MOSFET、IGBT 流控元器件&#xff1a;通过电流控制器件是否工作&#xff0c;常见的有光耦、三极管

python位运算

这几天&#xff0c;在看C代码&#xff0c;要做一个imsi的decode 里面的代码都是用C写的&#xff0c;位运算什么的。看的有点乱。 由于要在pc上进行解析&#xff0c;所以打算用python写&#xff0c;那么问题来了Python进行位运算要怎么玩&#xff1f; 看的比较多的教程是把这方面…

光耦的简介

光耦&#xff0c;光电耦合器的简称&#xff0c;它是以光信号作为介质传输电信号的元器件。光耦的输入端和输出端信号可以非常好的进行隔离&#xff0c;因此在隔离电路中经常会见到光耦。光耦合器一般由三部分组成&#xff1a;光的发射、光的接收及信号放大。输入的电信号驱动发…

接待员如何向客人upsell_客房留言卡也能收获好评,看看高情商酒店如何做的?...

客人对酒店最客观的评价从点评中就能看到&#xff0c;那酒店服务如何才能被客人看到呢&#xff1f;可不可以通过一张留言卡&#xff0c;被客人感知到呢&#xff1f;本文整理了多个客房服务实际场景案例&#xff0c;帮助酒店了解如何写好这张留言卡。一、什么场景下放置留言卡&a…

“2020 RT-Thread开发者大会” 思考感悟

从2019年开始参加RT-Thread的一次线下培训活动后&#xff0c;就深深的喜欢上这个国产的RTOS&#xff0c;之后RT-Thread举办的活动基本都有参加&#xff08;但每次活动抽奖都抽不到&#xff01;&#xff09;。当然&#xff0c;最为盛大的还属一年一度的RT-Thread开发者大会&…

构造函数demo

package cn.xuexi; /** 简单的写了一个构造函数的类* 总结一下构造函数的坑* 1、构造函数的名字必须与类型保持一致* 2、构造函数不能有任何返回值类型的修饰&#xff0c;void也不行* 3、构造函数中不能使用return 语句 */ public class GouZaoDemo { public static void main(…

小红书笔记_小红书的沙雕笔记,害人不浅啊

话说&#xff0c;当代人的十大必备软件是什么&#xff1f;要猫姐来说的话。除了微信微博抖音&#xff0c;小红书也肯定少不了&#xff01;它简直就是大部分PLMM的“种草神器”。就连明星都纷纷入驻小红书变身为“美妆博主”。前一阵上了热搜榜和李晨分手的范冰冰也是小红书的一…

禅、魏晋风度及其他

禅、魏晋风度及其他 从本质上说&#xff0c;禅与文学艺术活动是相悖的。禅讲“静虚”&#xff0c;讲“色空”&#xff0c;讲“人中无我”、“法中无我”。所谓“菩提本无树&#xff0c;明镜亦非台&#xff0c;本来无一物&#xff0c;何处惹尘埃”&#xff08;王蒙说这也不算彻底…

2020 RT-Thread开发者大会 ART-Badge电子胸牌(可二次开发)

2020 RT-Thread开发者大会 ART-Badge电子胸牌&#xff08;可二次开发&#xff09;&#xff0c;动手实验IOT会场有介绍使用PersimmonUI设计器进行柿饼UI的开发&#xff0c;使用拖拽控件、注册事件的方式进行GUI的开发。开发语言使用JS&#xff0c;界面实现非常方便&#xff0c;后…

datatables分页下一页不能点击_干货,删不掉Word文末最后一页?学会5个方法,再也不愁啦...

在处理Word文档时&#xff0c;经常会在文档最后出现一页空白&#xff0c;非常讨厌&#xff0c;更可恶的是总是删不掉&#xff0c;按退格键或者delete键都无济于事。你是不是也正在为删除Word文末空白页发愁呢&#xff1f;有没有好的方法解决这一问题呢&#xff1f;有的&#xf…

swift 第四课 随意 设置button 图片和文字 位置

项目中经常遇到按钮改变文字和图片位置的情况&#xff0c;所以尝试写一个 button 的分类&#xff1a; 参照连接 http://blog.csdn.net/dfqin/article/details/37813591 import Foundation import UIKit /*枚举 设置 图片的位置*/ enum ButtonImagePosition : Int{case Position…

C#中get和set访问器的用法

C#中的get和set访问器可用来获取和设置类中字段&#xff08;即属性&#xff09;的值&#xff0c;通过get和set访问器提供访问接口&#xff0c;从而可以避免对字段的直接访问造成的不安全性。 using System; using System.Collections.Generic; using System.Linq; using Syste…

asm扩容流程_Oracle rac asm 扩容

环境介绍&#xff1a;故事发生在Oracle 11.2.0.4 RAC/ Linux 6.8 的数据库集群服务器上。DATA/ ARCH/ 磁盘组空间不足&#xff0c;进行扩容。首先&#xff0c;如果要在线使用udev方式扩容asm&#xff0c;建议先备份两个节点所有在用网卡信息&#xff0c;避免bug误删除网卡信息。…

计分员计分程序

1.估计这个任务需要多长时间&#xff1a;两星期 2.需求分析&#xff1a; 作为一名现场记分员&#xff0c;我希望详细记录比赛现场比分增长情况&#xff0c;以便观众及运动员、教练员及时掌握比赛状况。&#xff08;满意条件&#xff1a;每一次比分的改变&#xff0c;都要形成一…

蓝牙入门基础知识(一)

蓝牙起源 1995年5月20日&#xff0c;在美国华盛顿州&#xff0c;索尼爱立信、IBM、英特尔、诺基亚、东芝成立了蓝牙技术联盟&#xff08;Bluetooth Special Interest Group&#xff0c;SIG&#xff09;。SIG是一个制定蓝牙规范&#xff0c;推送蓝牙技术发展的国际组织。SIG授权…

用python将图片写入ppt_用python做ppt服务用于导入图片

项目需要做WINFORM程序与powerpoint交互&#xff0c;把winform生成的图片自动拷贝到ppt中。目前使用python做了一个简单的服务解决。由于要求是32位程序&#xff0c;所以下面全都是32位的版本。第一步&#xff0c;安装python2.7 32位。第二部&#xff0c;安装py2exe 32位。第三…

C#语言入门详解---委托(刘铁猛)

委托&#xff1a;函数指针的升级版&#xff0c;可以类比C语言中的函数指针进行理解 变量的本质就是以变量名所对应的内存地址为起点的一段内存&#xff0c;这段内存中存储的就是变量的数据&#xff0c;这段内存的大小由变量的数据类型决定。 函数代表算法&#xff0c;函数的本…

【LintCode题集】Q6、Q64

最近开始刷LintCode上的题目&#xff0c;先从标签为容易的开始刷。今天刷的这两题目差不多为同一类型的题目&#xff0c;都是为按照一定的规则合并两个已经有序的数组。 [Q6] 描述&#xff1a; 合并两个排序的整数数组A和B变成一个新的数组。 样例&#xff1a; 给出A[1,2,3,4]&…

input标签的值只能两位小数_解决input只能输入金额类型的方案(金额输入框只能输入2位小数)...

欢迎加我技术交流QQ群 &#xff1a;811956471前言&#xff1a;最近在用uni-app框架&#xff0c;写一个项目(支付宝和微信小程序)遇到一个需求&#xff0c;要求金额输入框只能输入2位小数&#xff0c;且第一位数不能是 "."&#xff0c;只能是数字。发现用 input事件监…