单元测试
码术张
c、c++、java software engineer.
展开
-
一个演示Junit4实现原理的ut
文|码术张本文旨在说明Junit4源代码的设计思想。说明方式上,使用的是自己的一个创新的想法:用一个ut来说明。代码如下;package test;import org.junit.Test;public class IpTest { @Test public void should_True() throws Exception{ MyNotifier notifier = new MyNotifier(); MyResult resul原创 2021-01-29 17:44:44 · 332 阅读 · 0 评论 -
构建java ut运行环境
一 安装jdk二 安装vscode原创 2021-01-26 17:48:06 · 357 阅读 · 0 评论 -
【JAVA-UT】12、抛出了指定异常吗?
如何验证抛出的异常是指定的异常?下面介绍两种方法。方法一:public class Test1 { @Test(expected = IllegalArgumentException.class) public void test1() { throw new IllegalArgumentException(); }}期望的表达方式为(exp...原创 2019-04-09 10:51:02 · 852 阅读 · 0 评论 -
【JAVA-UT】21、spy--记录真实对象的行为
文|码术张埃德蒙对着下面这个类,皱着眉头,不知如何下手。public class TimeZoneActivator { public void activate(String newConfigs, String oldConfigs) { if (newConfigs == oldConfigs) { System.out.print("...原创 2019-12-31 19:53:45 · 668 阅读 · 0 评论 -
【JAVA-UT】20、ArgumentCaptor的使用
文|码术张有时,不仅要验证对象的方法是否被调用,还要检查传给方法的参数是否正确。今天,埃德蒙的工作是给类DownloadActive写ut。DownloadActive的功能是下载软件,并将成功与否的结果通知Listener.doTask首先做下载的动作,然后发通知。发通知,即调用listener的report方法。为了方便说明,将doTask简化,只是通知侦听者们一个字符串“OK”。...原创 2019-12-31 19:49:35 · 2482 阅读 · 0 评论 -
【JAVA-UT】19、如何做final class的mock对象
文|码术张这几天,埃德蒙的ut工作很顺利,风平浪静。代码覆盖率不断提高,犹如正在加热的水温一样。不过在水沸腾前,还要克服几个困难。今天他遇到了一个困难:如何mock一个final类?NameLoader是一个final类,也就是一个不能被继承的类。它有一个方法download, 用来从服务器上获取一个字符串。参数addr是服务器地址。假设服务器上只保存一个字符串。public ...原创 2019-12-31 19:48:12 · 3226 阅读 · 2 评论 -
【JAVA-UT】18、when--指定mock对象的返回值
文|码术张真实对象有自己的行为;mock对象没有。于是拿到输入后,真实对象有输出,mock对象没有输出。为了让mock对象模拟真实对象,就要给mock对象一个输出。在Mockito中,如何给mock对象一个输出呢?这就要用到when语句。when语句常用的4种类型,一一介绍如下。1 when(mockObject.methodA(input1)).thenReturn(output...原创 2019-12-31 19:45:09 · 3675 阅读 · 0 评论 -
【JAVA-UT】14、什么是stub
约翰接到一个任务,为下面这个类写ut。public class NameChecker { private NameLoader nameLoader; public NameChecker(NameLoader in) { nameLoader = in; } public boolean nameIsOnServer(String addr,...原创 2019-04-09 10:52:03 · 898 阅读 · 0 评论 -
【JAVA-UT】13、什么是依赖?
1、什么是依赖?一个类A,使用另一个类B,则说A依赖B。也说B是A的依赖(dependency)。2、为什么在单元测试中要消除依赖?因为依赖会增加资料开销,会降低代码重用性,。例如,一个类NameChecker, 检查名字是否在某一服务器上。首先,它需要从服务器上获取名字。然后,进行比较。从服务器获取名字的功能,假设由类NameLoader提供。这时NameLoader就是NameCh...原创 2019-12-31 19:36:32 · 1917 阅读 · 0 评论 -
【JAVA-UT】17、使用mock做单元测试的3步骤
前两节介绍了什么是mock。这节介绍如何使用mock。对于从没用过mock的读者,请先安装Mockito。它是一个优秀的mock框架。使用mock的过程,就像装一颗假牙。让我们跟着埃德蒙一起走进牙科医院。医生诊断出埃德蒙的一颗牙已经坏了,需要用假牙替换掉它。一星期后,假牙做好了,装入埃德蒙的口中。做了几次咬合动作,又被取出,打磨打磨。再装进去。直到医生认为满意为止。整个配假牙的过程...原创 2019-05-20 11:08:31 · 888 阅读 · 0 评论 -
【JAVA UT】16、mock与stub的比较
本节通过比较stub与mock,加深对stub、mock的认识。1、相同点都是在ut中消除依赖的一种方式。如前面两节,针对同一个类,在ut中分别使用了stub和mock,最后达到同样的测试效果。2、不同点2.1 实现方式不同stub需要手动实现被依赖项,而mock则是使用mock framework。在《什么是stub》中,依赖是NameLoader,ut中实际使用的是:NameL...原创 2019-04-25 14:08:48 · 590 阅读 · 0 评论 -
【JAVA UT】15、mock--消除依赖的另一种方法
一个ut只测一个类,当依赖其他类时,需消除依赖。消除依赖的方法,上节介绍了stub方法,本节介绍另一种方法:使用mock。本节的主题是展示使用mock可消除依赖 。至于mock的使用技巧,将在后面章节论述。为下面这个类写ut。public class NameChecker { private NameLoader nameLoader; public NameChecke...原创 2019-04-25 14:06:53 · 495 阅读 · 0 评论