一、单元测试概念
单元测试就是针对最小的功能单元编写测试代码,Java程序最小的功能单元是方法,因此,单元测试就是针对Java方法的测试,进而检查方法正确性。

二、Junit测试框架

(一)概念: Junit是Java语言实现的单元测试框架。
(二)优点:

  • 可选择测试方法
  • 一键执行全部测试方法
  • Junit可以生成全部方法的测试报告
  • 测试方法具有隔离性
    (三)实现单元测试
  • 1、导入JUnit包,若IDE已整合好Junit框架则不需要。
  • 2、编写测试方法:该方法必须是公共无参无反非静态方法
  • 3、添加@Test注解
  • 4、测试方法完成预期正确性测试。
  • 5、运行测试方法。(绿——通过,红——失败)

业务代码

public class UserService {public String login(String loginname,String password){if ("admin2".equals(loginname) && "123456".equals(password)) return "登录成功";else return "用户名或密码错误";}public void selectName(){System.out.println(10 / 0);System.out.println("查询全部用户名");}
}

测试代码

public class TestDemo{@Testpublic void testLogin(){UserService service = new UserService();String rs = service.login("admin","123456");//预期结果的测试Assert——断言测试Assert.assertEquals("功能业务出错!!","登录成功",rs);}@Testpublic void testSelectName(){UserService service = new UserService();service.selectName();}
}

效果输出1

org.junit.ComparisonFailure: 功能业务出错!!
Expected :登录成功
Actual   :用户名或密码错误
<Click to see difference>at org.junit.Assert.assertEquals(Assert.java:117)at com.zengoo.junit.TestDemo.testLogin(TestDemo.java:18)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)at java.base/java.lang.reflect.Method.invoke(Method.java:566)at org.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)at org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)at org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)at org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)at org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)at org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)at org.junit.runners.ParentRunner.run(ParentRunner.java:413)at org.junit.runner.JUnitCore.run(JUnitCore.java:137)at com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:69)at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)

一键测试

效果图

(四)Junit常用注解(Junit 4.0以上)

注解 说明
@Test 测试方法
@Before 修饰实例方法,在每一个测试方法执行之前执行
@After 修饰实例方法,在每一个测试方法执行之后执行
@BeforeClass 静态修饰方法,在所有测试方法执行之前只执行一次
@AfterClass 静态修饰方法,在所有测试方法执行之后只执行一次

Java学习路线(22)——测试框架Junit相关推荐

  1. 十年架构师留下最完整的Java学习路线

    原文地址:https://club.dingding.xin/topic/5081/十年架构师留下最完整的java学习路线?code=cb850abbce523c7f886f583d6dc00f5e ...

  2. 十年架构师留下最完整的Java学习路线,学完年薪40W

    文章有点长,请大家耐心看完,话不多说直接上干货! 永不过时的编程语言--Java 编程开发. Java编程语言占比: 据官方数据统计,在全球编程语言工程师的数量上,Java编程语言以900万的程序员数 ...

  3. Java学习路线从入门到入土

    Java学习路线从入门到入土 Java学习路线从入门到入土 Java学习路线从入门到入土 简介 Java基础课程 第一阶段 第一部分:Java开发介绍 第二部分:Java数组 第三部分:Java面向对 ...

  4. 从小白到大神Java学习路线

    Java学习路线 第一阶段:JavaSE 1. 第一部分:Java开发介绍 DOS常用命令 JVM.JRE.JDK之间的关系 Java开发环境的搭建:安装JDK,配置环境变量 Java入门程序(Jav ...

  5. java学习路线,一个初中生学java要多久,java难学吗

    一门永不过时的编程语言--Java 软件开发 java难学吗 java不难,你可以做如下学习 一.到相应的培训机构付费学习 别在这说培训机构没用什么的,不过一定要找正规的培训机构,不然容易被坑.培训机 ...

  6. 人类高质量 Java 学习路线【一条龙版】

    大家好,我是张讨嫌.现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了.大部分的博主推荐资源,也就是把播放量高的视频说一遍,水一期视频,没有一条很清晰的学习路线. ...

  7. 怒肝 Java 学习路线一条龙!

    文章为转载   请关注鱼皮好友  持续获取 有效学习知识 现在网上的编程资料实在太多了,而且人人肯定都说自己的最好,那就导致大家又不知道怎么选了.大部分的博主推荐资源,也就是把播放量高的视频说一遍,水 ...

  8. 【最新版】Java学习路线(含B站口碑推荐视频链接)

    文章目录 关于如何自学 一.计算机网络 二.数据结构与算法 三.操作系统 四.计算机组成原理 五.编译原理 六.设计模式 七.MySQL 八.实操工具 九.JAVA并发与JVM 十.Redis 十一. ...

  9. 这可能是最全面的Java学习路线了

    大家好,我是大彬~ 我本科学的不是计算机,大四开始自学Java,并且拿到了几个互联网中大厂的offer.在学习Java这方面还是比较有经验的,下面我来分享下我整理的Java自学路线. 在这里也提醒学弟 ...

  10. Java学习笔记-Day64 Spring 框架(二)

    Java学习笔记-Day64 Spring 框架(二) 一.控制反转IOC和依赖注入DI 1.控制反转IOC 2.依赖注入DI 3.Spring IOC容器 3.1.简介 3.2.实现容器 3.2.获 ...

最新文章

  1. C++通过GSoap访问webService
  2. boost::hana::Comparable用法的测试程序
  3. java 内存同步_Java中的硬件事务性内存,或者为什么同步将再次变得很棒
  4. jsp当参数为空的时候默认显示值
  5. epel源mysql版本_centos网络yum源和epel源(2017可用首选)
  6. sql中的日期函数和case函数
  7. vue.js2.0 新手开发_vue.js2.0实战(1):搭建开发环境及构建项目
  8. linux系统日志设置
  9. Unity3D 智能巡逻兵
  10. 做独立淘客app有哪些运营方法
  11. 微信开发工具,字体如何调整的大一点?
  12. mysql 连续打卡天数_Sql如何统计连续打卡天数
  13. python新手入门(四)
  14. java 根据拼音查询汉字_java根据拼音搜索,但数据库为汉字的解决方案
  15. E. Pencils and Boxes (树状数组优化dp)
  16. Ubuntu14.04安装adobe flash 插件
  17. VisionPro 9.X 各版本下载地址
  18. git commit 文字填错了 如何修改
  19. 如何将数字转化为中文大写 java
  20. LoRaWAN介绍3 优点

热门文章

  1. codeforces 614B Geda's Code
  2. python 计时_python运行计时
  3. c语言 字符串加密和解密算法实现
  4. 在SpringBoot中整合使用Netty框架提供WebSocket服务
  5. iPhone13真香,中国富豪纷纷抢购,苹果官网因此瘫痪,安卓被高端消费者抛弃...
  6. arcgis制图之天地图符号样式配置
  7. KD01策略丨SuperTrend+空头波段
  8. 智能仓储之RFID仓库管理解决方案-RFID智能仓储管理-新导智能
  9. [附源码]计算机毕业设计大学生创新项目管理系统Springboot程序
  10. 实例4,循迹模块的使用和循迹小车的实现