add testcase for inherition

This commit is contained in:
金戟
2020-11-21 22:53:32 +08:00
parent 2ae34e0b41
commit b8b4844c38
15 changed files with 368 additions and 74 deletions

View File

@@ -5,6 +5,18 @@
直接创建被测类对象,然后利用`TestableMock`访问私有成员的能力直接给这些字段赋值即可。
#### 2. 通过<u>接口对象或基类对象</u>指向派生类的实例,调用执行了派生类实现的方法。使用`@TestableMock`定义Mock方法时首个参数类型应该用 接口/基类 还是 派生类
#### 2. 父类变量指向子类对象时如何实现Mock方法
应该使用 接口/基类 类型,参见`should_able_to_mock_override_method`测试用例。
在代码中,经常会有使用<u>接口变量或父类变量</u>指向子类实例,调用父类或子类方法的情况。
这时候遵循一个原则Mock方法的首个参数类型**始终与发起调用的变量类型一致**。
因此不论被调用方法来自父类还是子类也不论子类是否覆写该方法Mock方法的首个参数类型都应该使用变量自身的接口或父类类型。
参见Java和Kotlin示例中`DemoInheritServiceTest`测试类的用例。
#### 3. `TestableMock`能否用于Android项目的测试
结合[Roboelectric](https://github.com/robolectric/robolectric)测试框架可使用。
Android系统的`Dalvik``ART`虚拟机采用了与标准JVM不同的字节码体系会影响`TestableMock`的正常工作。`Roboelectric`框架能在普通JVM虚拟机上运行Android单元测试其速度比通过Android虚拟机运行单元测试快非常多当下绝大多数Android App的单元测试都使用了`Roboelectric`框架。