【问题标题】:Android Unit test - mock inner class methodAndroid单元测试——模拟内部类方法
【发布时间】:2015-11-25 19:51:49
【问题描述】:

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

Class A{

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

        //some code

        b.callAndroidAPI()

        //some code

    }
}

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

【问题讨论】:

    标签: android unit-testing mocking


    【解决方案1】:

    您可以将“新”创建移动到另一个方法,然后用模拟覆盖该方法:

    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

    【讨论】:

      猜你喜欢
      • 2014-04-16
      • 1970-01-01
      • 1970-01-01
      • 2015-10-21
      • 1970-01-01
      • 2021-03-12
      • 1970-01-01
      • 1970-01-01
      • 2013-07-08
      相关资源
      最近更新 更多