前言

使用Junit进行单元测试,应该是所有Java开发的入门级教程,所以并不难。我也很久没敲过java代码了,为了不浪费我之前的Java基础,写一个简单案例记录一下,毕竟进行白盒测试也是一项基本技能,有点Java基础,遇到问题也能打个断点定位一下。

这里只介绍一个入门级的单元测试案例


环境

  • jdk1.8
  • 开发工具:Intellij IDEA


一、整体架构展示


二、简单案例讲解

1、创建一个maven项目,并导入junit依赖

1.1)创建一个maven项目




1.2)在pom.xml中导入Junit依赖

<dependencies><!--Junit依赖--><!-- https://mvnrepository.com/artifact/junit/junit --><dependency><groupId>junit</groupId><artifactId>junit</artifactId><version>4.12</version><scope>test</scope></dependency></dependencies>


2、创建被测试类

  • 注:被测试类是Java开发人员已写好的需被测试的类,实际测试中不需要准备,你能看懂Java代码就行,我这里就简单提供计算的测试类

CalculatorDemo

/*** @author mikasa* @descrption 被测试类*/
public class CalculatorDemo {/*** 求和** @param a* @param b* @return*/public int add(int a, int b) {return a + b;}/*** 求差** @param a* @param b* @return*/public int sub(int a, int b) {return a - b;}/*** 求乘积** @param a* @param b* @return*/public int multiply(int a, int b) {return a * b;}/*** 求商,注:java的/为求商的整数,商四舍五入** @param a* @param b* @return*/public int divide(int a, int b) {return a / b;}
}

3、创建测试类

注意:

  • 1)被测试类和test底下的包要保持一致
    例:被测试类属于com.mikasa包下,那在test底下也创建同样的包com.mikasa,将测试类放在该包下

  • 2)测试类命名规范:大写Test+被测试类名称 例:TestCalculatorDemo
    测试方法命名:test+被测试方法 例:testAdd()


TestCalculatorDemo

import org.junit.Assert;
import org.junit.Test;/*** @author mikasa* @descrption 测试类*/
public class TestCalculatorDemo {//实例化被测试类CalculatorDemo cal = new CalculatorDemo();/*** 测试加法*/@Testpublic void testAdd() {//断言判断值是否相等Assert.assertEquals(3, cal.add(1, 2));}/*** 测试减法*/@Testpublic void testSub() {Assert.assertEquals(2, cal.sub(1, 2));}/*** 测试乘法*/@Testpublic void multiply() {Assert.assertEquals(4,cal.multiply(2,3));}/*** 测试除法*/@Testpublic void divide() {Assert.assertEquals(5,cal.divide(5,2));}
}

基础扩展:

1、Junit断言:

Junit所有的断言都包含在 Assert 类中,这个类提供了很多有用的断言方法来编写测试用例。只有失败的断言才会被记录。Assert 类中的常用方法有如下:

  • void assertEquals(boolean expected, boolean actual):检查两个变量或者等式是否相等
  • void assertTrue(boolean expected, boolean actual):检查条件为真
  • void assertFalse(boolean condition):检查条件为假
  • void assertNotNull(Object object):检查对象不为空
  • void assertNull(Object object):检查对象为空

2、Junit注解:

  • @Test: 声明一个测试案例
  • @Before: 每个测试用例执行之前都会执行一次,例如:所有测试用例都需要实例化对象
  • @After: 每个测试用例执行之后都会执行一次
  • @BeforeClass: 所有测试用例执行之前执行,并且只执行一次
  • @AfterClass: 所有测试用例执行之后执行,并且只执行一次
  • @Ignore: 忽略有关不需要执行的测试

4、创建测试运行类

TestRunner

import org.junit.runner.JUnitCore;
import org.junit.runner.Result;
import org.junit.runner.notification.Failure;/*** @author mikasa* @descrption 执行测试类*/
public class TestRunner {public static void main(String[] args) {Result result = JUnitCore.runClasses(TestCalculatorDemo.class);for (Failure failure : result.getFailures()) {System.out.println("错误原因:" + failure.toString());}System.out.println("单元测试整体结果:" + result.wasSuccessful());}
}

5、运行测试运行类,查看结果

单元测试(一)使用Junit进行单元测试相关推荐

  1. 技术篇——使用 Junit 实现单元测试

    有很多测试技术和工具可以在敏捷测试中进行单元测试,传统单元测试工具包括 JUnit 和 XUnit,最近几年出来的 BDD 单元测试工具有 Spock 和 Spec2.Spock 和 Spec2 可以 ...

  2. 使用JUnit进行单元测试

    简介 JUnit 是一个 Java 编程语言的单元测试框架.JUnit 在测试驱动的开发方面有很重要的发展,是起源于 JUnit 的一个统称为 xUnit 的单元测试框架之一. 好处 可以书写一系列的 ...

  3. 在maven项目中使用Junit进行单元测试

    在maven项目中使用Junit进行单元测试(一) 在maven项目中使用Junit进行单元测试一 创建maven项目 编写测试用代码 小结 这是第一篇博文,所以我决定先从比较简单的内容写起,同时熟悉 ...

  4. 使用junit进行单元测试_使用JUnit对ADF应用程序进行单元测试

    使用junit进行单元测试 JUnit是Java语言的单元测试软件包,由于ADF构建在J2EE框架之上,因此可以用于测试Oracle ADF应用程序. 单元测试基本上是根据某些定义的测试标准来验证最小 ...

  5. 使用junit进行单元测试_使用JUnit5对DynamoDB应用程序进行单元测试

    使用junit进行单元测试 在上一篇文章中,我描述了新的Java 2 AWS开发工具包,它为调用不同AWS服务的Java客户端提供了非阻塞IO支持. 在本文中,我将介绍一种用于单元测试AWS Dyna ...

  6. 使用NetBeans 7.4 beta提示进行更好的基于JUnit的单元测试

    在上一篇文章中 ,我写了NetBeans 7.4 beta中提供的提示 ,这些提示提高了开发人员避免Java异常处理带来的讨厌的运行时问题的能力. 在本文中,我将研究如何使用NetBeans 7.4 ...

  7. junit进行单元测试_通过JUnit规则轻松进行AppEngine单元测试

    junit进行单元测试 by Ramesh Lingappa 通过拉梅什·林加帕(Ramesh Lingappa) 通过JUnit规则轻松进行AppEngine单元测试 (AppEngine unit ...

  8. 使用Spring配合Junit进行单元测试的总结

    最近公司的项目和自己的项目中都用到了spring集成junit进行单元测试,总结一下几种基本的用法: 1.直接对spring中注入的bean进行测试(以DAO为例): 在测试类上添加@RunWith注 ...

  9. 说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,今天就来学习一下

    1.    说实话,写了这么多程序了,还从来没有用JUnit作为单元测试工具测试过,心理面感到真的是惭愧.原来的所有测试,我都是通过在控制台打印输出语句看结果,这样就可以根据自己打印的信息自己去判断, ...

  10. IDEA中的单元测试模块(Junit)不能自动导包

    IDEA中的单元测试模块(Junit)不能自动导包? 问题描述: 解决方法: 问题描述: 在Java学习中,JUnit模块可以说是比不可少的,IDEA经常出现不能自动导入JUnit4的情况,经过多次尝 ...

最新文章

  1. 新51CTO博客体验笔记
  2. Hadoop版本选择探讨
  3. 项目背景怎么描述_产品经理写简历,如何让「项目经验」更出众?
  4. lnmp pathinfo问题
  5. 上传图片预览,支持IE6
  6. eclipse启动tomcat报错:org.apache.logging.log4j.web.Log4jServletContextListener
  7. 邵国际: C 语言对象化设计实例 —— 命令解析器
  8. 2018年数学建模竞赛-高温作业专用服装设计
  9. mysql msdtc 不支持_MSDTC”该伙伴事务管理器已经禁止了它对远程网络事务的支持”的错误(转) | 学步园...
  10. SFM(Structure from Motion)一点总结
  11. 全新按摩控制板助力按摩产品发展
  12. ESD笔记(三)_常用ESD保护电路优缺点
  13. 微信开启全民付费模式,我们有个共同好友叫“Feed广告”
  14. Qt 之 自定义窗口标题栏
  15. 利用SSR修正的RTKLIB PPP测试
  16. Linux、git和github的故事
  17. Windows8下使用Oracle10G的忧伤
  18. 直方图均衡化、规定化、局部直方图均衡化、直方图统计
  19. literal does not match format string
  20. 如何获取linux源码

热门文章

  1. 【从零开始学架构-李运华】10|架构设计流程:识别复杂度
  2. C语言之取反和取相反数
  3. 千峰前端html个人笔记
  4. unity3d游戏3d横版格斗游戏完整项目源码分享
  5. 薄板开孔建模计算的ansys命令流
  6. 【ANSYS命令流】加载与求解技术(一):节点自由度约束相关命令流
  7. uci2019计算机录取,加州大学公布2019年最新录取数据!
  8. ZZULIOJ1051-1055Python解法
  9. Excel从省份证中提取信息
  10. java取拼音首字母_java取出汉字字符串的拼音首字母