Android 单元测试 - 模拟内部 class 方法
Android Unit test - mock inner class method
Class A 有一个创建 class B 的新实例并调用 Android API 功能的方法。
Class A{
public void foo(){
B b = new B();
//some code
b.callAndroidAPI()
//some code
}
}
如何对 class b foo() 方法进行单元测试。在调用 foo() 之前,有什么方法可以 override/mock 调用 AndroidAPI() 吗?
谢谢!
您可以将 "new" 创建移动到另一个方法,然后用 mock 覆盖该方法:
Class A {
B getB() {
return new B();
}
public void foo(){
B b = getB();
//some code
b.callAndroidAPI()
//some code
}
}
然后在您的测试中,您可以覆盖 getB 调用。
@Test
public void testBFoo() {
A a = new A() {
B getB() {
return bMocked;
}
}
// verify interactions
}
此外,我最近写了这篇文章:http://www.adavis.info/2015/11/testing-tricks-1-dealing-with-new.html
Class A 有一个创建 class B 的新实例并调用 Android API 功能的方法。
Class A{
public void foo(){
B b = new B();
//some code
b.callAndroidAPI()
//some code
}
}
如何对 class b foo() 方法进行单元测试。在调用 foo() 之前,有什么方法可以 override/mock 调用 AndroidAPI() 吗? 谢谢!
您可以将 "new" 创建移动到另一个方法,然后用 mock 覆盖该方法:
Class A {
B getB() {
return new B();
}
public void foo(){
B b = getB();
//some code
b.callAndroidAPI()
//some code
}
}
然后在您的测试中,您可以覆盖 getB 调用。
@Test
public void testBFoo() {
A a = new A() {
B getB() {
return bMocked;
}
}
// verify interactions
}
此外,我最近写了这篇文章:http://www.adavis.info/2015/11/testing-tricks-1-dealing-with-new.html