网站首页 > java教程 正文
单元测试(Unit Testing简称UT)是最微小规模的测试;测试粒度在某个类、函数或代码块。典型地由程序员而非测试员来做。单元测试是在软件开发过程中要进行的最低级别的测试活动,软件的独立单元将在与程序的其他部分相隔离的情况下进行测试。UT也是TDD测试驱动开发的基础。
在Java语言环境下,推荐采用JUnit,也可以和Eclipse/IntelliJ集成或单独运行。
语言环境 | 推荐工具 |
Java/Android | JUnit |
C# | NUnit |
iOS | XCTest |
Javascript | Jasmine |
下文以Java的单元测试框架JUnit4和Eclipse为例。
理解JUnit有两个基本元素。首先,你必须了解JUnit测试代码的结构和生命周期。我们从这里开始。我们将看一看如何在测试类(test classes)中定义测试方法(test methods),然后熟悉测试的生命周期——JUnit如何以及何时实例化和调用你的测试类及其方法。
其次,就是JUnit的断言(Assertion) API。基本的和常用的断言方法很简单,你看到它们的方法签名就知道如何使用了。因此,我们只会通过名字来调用这些方法,而聚焦于那些缺乏自我解释的更加“不透明”的断言。
简而言之,JUnit测试类只是普通的Java类,包含一个或多个测试方法,以及零个或多个setup和teardown方法。JUnit也为找到的测试定义了一个简单的生命周期。
JUnit测试最基本的形式是带有注解的普通实例方法。这些方法执行被测代码,使用JUnit提供的API来断言所期望的条件和副作用。
下面展示了一个带有一个测试方法和一个setup方法的简单JUnit测试类。测试方法必须是public void的,并且不带参数。(测试方法可以声明为抛出异常。这是可以的。)
|
|
可以看到,每个单元测试都是由三部分组成的,称为3A模式:
- Arrange – 准备被测类或函数,以及所依赖的协作者,准备相应的场景数据:
WorldOrder newWorldOrder = new WorldOrder(); - Act – 调用被测方法,并得到返回结果:
boolean result = WorldOrder.isComing(); - Assert – 断言返回结果是否与期望值是否一致,作为单元测试的结果:
assertFalse(result);
测试方法的命名也可用given-when-then的三段式,将方法名作为测试用例的描述。
@Before和@After和注解用来在每个测试执行之前和之后调用,一般用来做测试的事前设置(SetUp)和事后清理(TearDown)。测试类可以有任意多的@Before和@After方法;JUnit会确保调用到每一个,尽管它不保证调用的顺序。
Reference:
- http://www.jackyshen.com/2015/07/11/a-junit-primer/
- 想要进一步了解敏捷工程实践,关注Certified Scrum Developer国际认证课程
猜你喜欢
- 2024-10-05 Junit4入门之单元测试Junit介绍(junit4入门之单元测试junit介绍英文)
- 2024-10-05 五分钟技术趣谈 | Java常用的单元测试框架介绍
- 2024-10-05 「SpringBoot」 单元测试利器-Mockito
- 2024-10-05 如何使用Python进行单元测试(python单元测验答案)
- 2024-10-05 如何用TestNG进行java单元测试?(java中的test检测)
- 2024-10-05 干货篇-错过一次 错过一年!单元测试之Junit
- 2024-10-05 万字长文:一文详解单元测试干了什么
- 2024-10-05 一台不容错过的Java单元测试代码“永动机”
- 2024-10-05 新的单元测试工具已到位,Java程序员还不快来尝尝新?
- 2024-10-05 Java JUnit单元测试(java的单元测试)
你 发表评论:
欢迎- 最近发表
-
- 你真的会用 Java 中的线程池吗?多个企业级线程池工具类封装实践
- 线程池的实现原理、优点与风险、以及四种线程池实现
- Java线程池ThreadPoolExecutor实现原理剖析
- 深入分析线程池的实现原理(线程池是干嘛的)
- 一文搞懂JAVA线程池工作原理(java线程池的工作流程)
- Java线程池的工作原理(java线程池的实现原理)
- 5分钟读懂C#中TcpClient、TcpListener和Socket三个类的角色
- JVM对象的创建过程(jvm运行过程中创建的对象一般存放在方法区)
- 对象组成与Java内存模型JMM分析(java对象在内存中存储的结构)
- JVM对象内存分配详细过程(栈上分配->TLAB->老年代->Eden区)
- 标签列表
-
- java反编译工具 (77)
- java反射 (57)
- java接口 (61)
- java随机数 (63)
- java7下载 (59)
- java数据结构 (61)
- java 三目运算符 (65)
- java对象转map (63)
- Java继承 (69)
- java字符串替换 (60)
- 快速排序java (59)
- java并发编程 (58)
- java api文档 (60)
- centos安装java (57)
- java调用webservice接口 (61)
- java深拷贝 (61)
- 工厂模式java (59)
- java代理模式 (59)
- java.lang (57)
- java连接mysql数据库 (67)
- java重载 (68)
- java 循环语句 (66)
- java反序列化 (58)
- java时间函数 (60)
- java是值传递还是引用传递 (62)
本文暂时没有评论,来添加一个吧(●'◡'●)