无法在测试中找到Textview

时间:2016-10-27 09:03:20

标签: java android junit junit4 android-testing

我无法在测试中通过id找到Textview。我做错了什么?

 private MyActivity myActivity;
    @Before
    public void setUp() throws Exception {
        myActivity= Mockito.mock(MyActivity .class);
    }

测试:

 @Test
    public void testFindView() throws Exception {
        System.out.println(myActivity); // This is not null
        this.myActivity.setContentView(R.layout.container);
        TextView viewText = (TextView) this.myActivity.findViewById(R.id.container_text);
        System.out.println(viewText ); // This is null
}

1 个答案:

答案 0 :(得分:1)

调用Mockito.mock()并不会创建一个真实的实例,而只会创建一个真实的实例。它的主要目的是使单元测试远离任何外部依赖,并跟踪与对象的交互。

所以,当你打电话给this.myActivity.setContentView(R.layout.container);时,没有什么事情真的发生,因为嘲笑myActivity没有常规MyActivity的内部 - 你只是调用了一个你没有命令做任何事情的存根方法。 因此,如果要测试它的工作原理,则需要创建一个真实的MyActivity实例。如果您仍想跟踪互动,也可以使用Spy对象进行游戏(可以查看here

相关问题