Junit是Java单元测试框架,一般Eclipse里面会集成这个Junit4测试工具

既然是测试工具,虽然开发用得比较多,但作为测试人员也需要具备会Junit测试的思想,况且技多不压身

这里简单介绍下用法:

1、在eclipse中创建一个junit4Test工程

点击“File” -> “New” -> “Java Project”,出现如下界面,填写工程名称junit4Test:

点击Next或者Finish,即创建好了junit4Test工程

2、创建com.junit4Test包

右键“junit4Test”工程名称,选择“New” -> “Package”,即得到包的配置界面如下:

填写包名,然后点击Finish即创建了junit4TestPackage包

3、创建被测试类和方法

这里我们用简单的加法来做被测试对象

右击包名“junit4TestPackage” -> “New” -> “Class”,出现下面的配置界面:

配置好类名称,然后点击“Finish”即创建了类,然后在类里面写一个加法的方法:

package com.junit4Test;

public class Add {
public int addTest(int x,int y){
return x + y;
} }

  

4、创建测试包

创建方法和上面的创建包一样,取个名字“junit4AddTest”

5、创建测试类

右键测试包名“com.junit4AddTest” -> “New” -> “JUnit Test Case”,如果你没有导入Junit的jar包,那你需要先导入下,右击工程名称“junit4Test”,选择“Properties”或者选择“Build Path” -> “Configure Build Path” ,出现如下配置界面:

按照上面步骤配置即可。然后按照开始说的,就会出现如下配置界面:

写好测试类名称,选择好需要的方法(如无需要可以不选择)和需要测试的类(因为不在一个包里面,这里填写的是包名+类名),然后点击“Next”:

勾选被测试方法addTest,然后选择“Finish”,这时候就创建好了用例:

这时候看到的是一个空的测试方法,我们需要调用被测试方法并做断言,上面右侧红框中应该是如下代码:

package com.junit4AddTest;

import static org.junit.Assert.*;
import com.junit4Test.*;
import org.junit.Test; public class AddTest { @Test
public void testAddTest() {
int z = new Add().addTest(1,2);
assertEquals(3,z);
} }

  

这时候就可以执行测试类了,右击测试用例可以看到,原来是执行java程序,现在变成了执行junit Test:

执行结果如下:

执行结果是Runs:1/1(总共一个用例,执行了一个用例),Errors:0(没有错误),Failures:0(没有失败)

如果我们把断言值改成:assertEquals(2,z);,则结果如下:

把断言改了之后,左侧显示Failures:1(失败一个用例),用例也显示为,左侧下面也给出了Trace。

我们在测试类中复制一个testAddTest方法,一个错误的一个成功的:

package com.junit4AddTest;

import static org.junit.Assert.*;
import com.junit4Test.*;
import org.junit.Test; public class AddTest { @Test
public void testAddTest() {
int z = new Add().addTest(1,2);
assertEquals(2,z);
}
@Test
public void testAddTest1() {
int z = new Add().addTest(2,2);
assertEquals(4,z);
} }

  

我们再执行下看看结果如下:

失败的依然是标记失败

------------------------------------------------------------------华丽的分割线------------------------------------------------------------------

补充说明下Junit 的几种注解(和python中的装饰器类似):

  1.@Test: 测试方法

    a)(expected=XXException.class)如果程序的异常和XXException.class一样,则测试通过
    b)(timeout=100)如果程序的执行能在100毫秒之内完成,则测试通过

  2.@Ignore: 被忽略的测试方法:加上之后,暂时不运行此段代码(JUnit5中使用@Disabled代替)

  3.@Before: 每一个测试方法之前运行(Junit5中使用@BeforeEach)

  4.@After: 每一个测试方法之后运行(Junit5中使用@BeforeEach)

  5.@BeforeClass: 方法必须必须要是静态方法(static 声明),所有测试开始之前运行,注意区分@before,是所有测试方法(Junit5中使用@BeforeAll)

  6.@AfterClass: 方法必须要是静态方法(static 声明),所有测试结束之后运行,注意区分 @After(Junit5中使用@AfterAll)

  7.@Parameters:表示该方法是个参数化测试(Junit5中使用@ParameterizedTest)

需要导入如下:

import org.junit.Test;
import org.junit.Ignore;
import org.junit.Before;
import org.junit.After;
import org.junit.BeforeClass;
import org.junit.AfterClass;

  

如果在创建JUnit case的时候,勾选了相关项,则在case里面就会自动生成(下图红色框):

setUpBeforeClass对应BeforeClass

setUp对应Before

tearDownAfterClass对应AfterClass

tearDown对应After

这个有点类似python中unittest框架中的setUp和tearDown,包括里面的断言。使用过的小伙伴应该一看就懂

另外Junit框架和python中unittest框架类似的是测试套件(testsuite)这个概念,下面讲解下套件如何使用

我们在原来加法基础上再增加一个被测类(减法),如下:

package com.junit4Test;

public class Minus {
public int Minus(int x,int y){
return x - y;
}
}

则被测包中有俩个被测类:

在测试类中响应增加减法的测试类:

package com.junit4AddTest;

import static org.junit.Assert.*;

import org.junit.Test;
import com.junit4Test.*; public class MinusTest { @Test
public void test() {
int z = new Minus().Minus(5,2);
assertEquals(3,z);
} }

这样,我们就有俩个类三个测试用例:

我们在测试类的包里面增加一个套件类,来统一管理测试类:

测试套件代码如下:

package com.junit4AddTest;

import org.junit.runner.RunWith;
import org.junit.runners.Suite;
import org.junit.runners.Suite; @RunWith(Suite.class)
@Suite.SuiteClasses({AddTest.class,MinusTest.class})
public class AllTestCase {
/*
* 这里不需要写任何东西
* 把需要的测试类填写到上面SuiteClasses中即可
*/
}

  

这样便于测试类的管理~

Java之单元测试工具(Junit)的更多相关文章

  1. Java程序单元测试工具对比——Parasoft Jtest与Junit

    Web应用程序开发中,面向对象的Java语言占了不少的比重.对于Java应用程序的测试方法或方式多种多样,比较典型的是程序员自己来完成程序测试中的一个部分——单元测试. 之前,慧都资讯提到单元测试是程 ...

  2. Maven的安装配置及初次创建项目与java单元测试工具JUnit

    Maven  安装     1.把maven安装包解压到某个位置     2.配置M2_HOME环境变量指向这个位置 3.在path环境变量中添加;%M2_HOME%\bin 配置镜像 国内的阿里云镜 ...

  3. 单元测试工具Junit浅谈

    什么是单元测试?   写了一个类和一些方法,给别人用,会不会有bug?那就测一下这些方法吧 怎么测?   用main方法测?不能一起运行,需要人为观察输出是否正确,测试效率低 单元测试能带来什么好处? ...

  4. 11th 单元测试工具JUnit的学习

    1.写好一个简易的四则运算的程序 UnitTest类文件: public class UnitTest { int a; int b; int answer;//正确答案 public int plu ...

  5. 测试 | 单元测试工具 | JUnit | 参数化

    被测试类: package project; public class MyCalendar2 { public int getNumberOfDaysInMonth(int year, int mo ...

  6. 测试 | 单元测试工具 | JUnit

    http://junit.sourceforge.net/javadoc/org/junit/Assert.html 使用: 新建测试类: 在预测试的类上点击右键--->NEW--->Ju ...

  7. Hibernate单元测试工具junit

    相关注解 @Text :测试方法 @Before :初始化方法 @After : 释放资源

  8. Java知识积累——单元测试和JUnit(一)

    说起单元测试,刚毕业或者没毕业的人可能大多停留在课本讲述的定义阶段,至于具体是怎么定义的,估计也不会有太多人记得.我们的教育总是这样让人“欣 慰”.那么什么是单元测试呢?具体科学的定义咱就不去关心了, ...

  9. 单元测试利器 JUnit 4

    引言 毋庸置疑,程序员要对自己编写的代码负责,您不仅要保证它能通过编译,正常地运行,而且要满足需求和设计预期的效果.单元测试正是验证代码行为是否满足预期的有效手段之一.但不可否认,做测试是件很枯燥无趣 ...

随机推荐

  1. Python 的经典设计格言,格言来源于 Python 但不限于 Python

    The Zen of Python, by Tim Peters Beautiful is better than ugly. Explicit is better than implicit. Si ...

  2. Ajax使用的五步法

    Ajax使用的五步法 <script type="text/javascript">           //用于保存XMLHttpRequest对象的变量,由于整个过 ...

  3. 从阿里巴巴面试题到java类加载机制

    首先很经典的阿里巴巴面试题 加上我自己的一些疑惑代码 public class Text { public static int k = 0; public final int k1 = 3; //自 ...

  4. 在 ASP.NET Core 中发送邮件遇到的坑_学习笔记

    功能需求 因为项目需要有个忘记密码验证邮箱再重新修改密码的功能,然后我选用了很简单的一个方案,通过验证登录用户的邮箱然后发送邮件,通过这个邮件发送的链接地址来最后实现密码修改的小功能. 项目环境及实现 ...

  5. Scrum冲刺阶段3

    成员今日完成的任务 人员 任务 何承华 美化主界面 陈宇 后端设计 丁培辉 美化主界面 温志铭 主页面的设计 杨宇潇 主页面的设计 张主强 服务器构建 成员遇到的问题 人员 问题 何承华 主页面美化意 ...

  6. typeof 和 instanceof apply与call简单用法以及判断数组的坑

    1 typeof 和 instanceof var array = [];平时如果判断一个对象是否为数组,可能你会用 typeof array,但是输出为“object”. typeof 一般只能返回 ...

  7. C#应用NPOI实现导出EXcel表格中插入饼状图(可实现动态数据生成)

    一.思路:   1.excel是可以通过NPOI插入图片的: 2.C#通过NPOI生成饼状图: 3.把生成的饼状图以字节流的形式插入到表格 二.看代码: #region 生成饼图图例 /// < ...

  8. wcf生成客户端代理类步骤及语句

    通过svcutil.exe工具生成客户端代理类和客户端的配置文件 .在运行中输入cmd打开命令行 ()cd C:\Program Files (x86)\Microsoft SDKs\Windows\ ...

  9. 第二次OO总结

    作业5——多线程电梯 好像失忆了,竟然对这三部电梯很陌生,我尽量回忆一下当时挣扎的场景orz 整体思路和第二次电梯差不多,但是将调度器类套在了电梯类里 优点可能是没有无效,足矣!!!缺点emmmm要是 ...

  10. Sql Server常用数据库函数小结

    查询验证存储过程是否存在 SELECT name FROM sysobjects WHERE  xtype = 'P' and name = '{0}' ----------------------- ...