依赖:这个很重要,不同版本用法也有点区别: <dependency> <groupId>org.mockito</groupId> <artifactId>mockito-all</artifactId> <version>2.0.2-beta</version> <scope>test</scope> </dependency> <dependency> <group…
1.为什么要用mock 我的一本书的解释: (1)创建所需的DB数据可能需要很长时间,如:调用别的接口,模拟很多数据 (2)调用第三方API接口,测试很慢, (3)编写满足所有外部依赖的测试可能很复杂,复杂到不值得编写,Mock模拟内部或外部依赖可以帮助我们解决这些问题 另一本TDD书的解释: (1)对象的结果不确定,如每获取当前时间,得到的结果都不一样,无法符合我们的预期: (2)实现这个接口的对象不存在: (3)对象速度缓慢 对于TDD还有一个更重要原因:通过模拟可以隔离当前方法使用的的所有…
inal---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型. final方法不能被重写 如果不希望类中的某个方法被子类重写,我们可以设置这个方法为final方法,只需要在这个方法前加上final修饰符(子类中还是可以调用父类中的…
final---用于类.方法前. final类---不可被继承. final方法---不可被覆盖. final类不能被继承. 如果我们不希望一个类被继承,我们使用final来修饰这个类.这个类将无法被继承.比如我们设定的Math类,涉及了我们要做的数学计算方法,这些算法也没有必要修改,也没有必要被继承,我们把它设置成final类型. 代码如下: <? //声明一个final类Math final class Math{ public static $pi = 3.14; public funct…
有些对象需要mock的对象是由工厂方法产生出来的,而工厂方法一般是静态方法,这时候就需要同时mock工厂方法及对象 被测方法: public class EmployeeServiceFactory { public void saveEmployee(Employee employee){ EmployeeDaoFactory dao = EmployeeDaoFactory.newInstance(); method("powermock"); dao.addEmployee(em…
在编写代码时,经常需要调用别人已经写好的工具类,而这些工具提供的方法经常是static方法,在这里,直接贴出<PowerMock实战手册>中的例子 待测试方法: public class EmployeeService { public int getEmployeeCountWithStatic() { return EmployeeUtils.getEmployeeCount(); } } 引用的工具类 public class EmployeeUtils { public static…
测试私有(private)的方法有两种: 1)把目标类的私有方法(修饰符:private)修改为(public),不推荐,因为修改了源程序不佳 2)通过反射 (推荐) 代码演示: 目标程序 PrivateMethod.java package com.junit3_8; public class PrivateMethod { //私有方法 private int add(int a, int b) { return a +b ; } } 测试程序 PrivateMethodTest.java…
# 一: class P: __age = 30 #私有静态属性 def __init__(self,name): self.__name = name #私有属性:属性名前面加上双下划线是私有属性. def get_name(self): return self.__name def __func(self): #私有方法 print('私有方法') p = P('alex') # print(p.__name) #报错,在类的外面,不能使用这个方法来调用私有属性. print(p._P__n…
背景 遇到问题:在进行Spring单元测试编写时,发现被测方法是一个私有方法,无法直接通过注入对象调用 解决思路:首先想到通过反射获取该私有方法的访问权限,并传入注入对象,最终调用对象的私有方法. 出现的异常 运行时抛出空指针异常 定位问题 点击异常代码行打上断点,debug调试 通过查看变量值发现roleMapper为空,从而导致空指针 而roleMapper是传入this对象的属性,因此,问题来自传入的对象 分析问题 通过分析this对象,可以发现它是一个被Cglib代理后的实例,由此可知,…
前言 在Visual Studio 2012 中,针对Unit Test 的部分,有一个重要的变动: 原本针对「测试对象非public 的部分」,开发人员可通过Visual Studio 2010 自动产生的accessor ​​来进行测试.但在Visual Studio 2012 中,将此功能移除了. Accessor ​​其背后的原理,是将对象通过很「脏」的反射方式,把对象内所有的东西public 出来.并且Visual Studio 在更新对象后,进行与设计测试时,会帮你做同步产生acce…