Android单元测试 - 模拟内部类方法

时间:2015-11-25 19:51:50

标签: android unit-testing mocking

A类有一个创建B类新实例并调用Android API功能的方法。

Class A{

    public void foo(){
        B b = new B();

        //some code

        b.callAndroidAPI()

        //some code

    }
}

如何对b类foo()方法进行单元测试。有没有办法在调用foo()之前覆盖/模拟callAndroidAPI()? 谢谢!

1 个答案:

答案 0 :(得分:1)

您可以将“新”创建移动到另一个方法,然后使用mock重写该方法:

@Test
public void testBFoo() {
    A a = new A() {
        B getB() {
          return bMocked;
        }
    }

    // verify interactions
}

}

然后在测试中,您可以覆盖 getB 调用。

{{1}}

另外,我最近写了这篇文章:http://www.adavis.info/2015/11/testing-tricks-1-dealing-with-new.html