如何使用mockit来测试Android的MainActivity onCreate中的依赖



我想知道如何测试MainActivity在Android中的依赖关系。这是一个简化的例子。我想用Mockito模拟MyClass

public class MainActivity extends Activity {
    MyClass myClass;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        myClass = new MyClass();
        myClass.doSomething();
    }
}

我已经尝试使用静态工厂方法,我已经研究了一些其他的工厂模式。麻烦的是,MainActivity.onCreate似乎是一个死胡同,很难注入模拟MyClass

是否有一种方法来模拟MyClass与Mockito这里不使用另一个模拟或依赖注入库?我很高兴在必要时重构代码。

UPDATE我只是想我可以使用setter。这是一个合适的解决方案吗?我看到的主要问题是,它正在为不适合由其他任何东西使用的mock创建一个setter。至少,它可以是包私有的,以限制访问。

public class MainActivity extends Activity {
    MyClass myClass;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        setMyClass(new MyClass());
        myClass.doSomething();
    }
    void setMyClass(MyClass myClass) {
        this.myClass = myClass;
    }
}

UPDATE 2我也意识到,在不使myClass私有,我可以使用像mMyActivity.myClass = mockMyClass的东西。这是一个好方法吗?我认为myClass真的应该是私人的。它还意味着让默认构造函数运行以创建myClass,然后以通常不应该发生的方式更改其状态。

如果添加了PowerMockito,则可以使用PowerMockito.whenNew(MyClass.class)执行此操作。但是您需要将@PrepareForTest(MainActivity.class)添加到TestCase

看看dagger2。

从第一眼就不清楚如何使用它。但是看一下示例- https://github.com/chiuki/friendspell

相关内容

  • 没有找到相关文章

最新更新