特浓咖啡,第二次活动的测试发布

问题描述:

我想知道如何测试点击按钮时的活动启动。我知道这可能是这样做的: onView(withText(R.string.button_next_activity)).perform(click());,然后onView(withId(R.id.second_tv_welcome)).check(matches(withText(R.string.second_tv_welcome)));其中second_tv_welcome是来自第二个活动的textView。但我目前的活动是启动Facebook的网页视图,我不知道这个活动中的ID是什么,另外我没有发现这种检查方法(检查一个文本视图是否存在并且具有期望的文本)非常干净。 任何解决方法?谢谢。特浓咖啡,第二次活动的测试发布

您应该避免在功能测试中使用外部服务。这包括使用GPS和内部做的事情来进行API调用,例如, Facebook或Google+登录按钮。

我用它的方式是创建两种风格,并在每个中都放置登录按钮布局:一个真实的,用于生产和一个模拟,除了通知登录操作成功(或失败) ,所以调用代码可能会转到另一个活动。这听起来似乎很难在第一妥善做好,所以你可能想看看我的宠物的应用程序的相关代码:

两种口味在这个应用程序中定义stub_login文件夹作为src/res文件夹中的build.gradle

sourceSets { 
    mock { 
     java { srcDir 'src/stub_login/java' } 
     res { srcDir 'src/stub_login/res' } 
    } 
    apiary { 
     java { srcDir 'src/stub_login/java' } 
     res { srcDir 'src/stub_login/res' } 
    } 
} 

而且tests(不太多了,现在)与运行:

./gradlew connectedAndroidTestMockDebug 

注意,功能测试是在src/androidTestMock和单元测试可以留在src/androidTest

+0

即使它不回答我的问题,您的资源是非常宝贵的。我会举例说明你做了什么,并将其应用于我的项目。非常感谢!注意:我使用robolectric + mockito – 2015-02-24 18:38:19

+0

@ E-Kami进行单元测试如果这不能回答你,那么我可能不明白这个问题。您的'button_next_activity'的点击处理程序是直接调用'startActivity'还是它是Facebook登录按钮? – 2015-02-25 14:26:16

+0

是点击一个按钮调用'startActivity',我问的是测试是否启动了正确的活动(因为在某些情况下,我不希望Facebook登录被启动,但另一个活动)。无论如何,你给我的是非常有用的。我将它整合到我的项目atm中。非常感谢。 – 2015-02-25 14:54:56