首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >Android测试驱动开发

Android测试驱动开发
EN

Stack Overflow用户
提问于 2011-06-07 14:44:58
回答 6查看 18.3K关注 0票数 44

我在制作Android应用程序方面有相当多的经验。对于我的新项目,我们决定做测试驱动开发(TDD)。我一直在使用Robotium进行用户场景测试,它工作得很好,看起来也很容易。

对于单元测试,我尝试使用(MockContext Android Class)模拟上下文,但我无法这样做。我浏览了这个博客http://sites.google.com/site/androiddevtesting/和这个http://sdudzin.blogspot.com/2011/01/easy-unit-testing-for-android.html,它表明在Android应用程序中模仿仍然是非常有限和困难的,并建议使用PowerMock,jMockit,JeasyTest,或Roboelectric (与Mockito和Maven结合使用),甚至RoboGuice。

我想从你们那里得到任何建议,在你们看来哪个单元测试框架是测试Android应用程序最好的。(特别是测试Android类,可能会提供模拟上下文和其他模拟功能,以便我可以使我的测试用例尽可能独立)。任何建议或指示都会很有帮助。谢谢

EN

回答 6

Stack Overflow用户

回答已采纳

发布于 2011-06-13 03:43:42

对于设备外测试,请查看Robolectric

要进行设备上的测试,请查看Borachio

底线:要做好这件事仍然非常非常困难。情况正在改善(今天的情况比6个月前好了很多),但Android是我写过的程序中最不友好的测试环境。

票数 30
EN

Stack Overflow用户

发布于 2014-05-02 04:24:17

为了在Android中进行TDD,我个人使用了以下所有工具:

另外:使用依赖注入库,如DaggerRoboguice,将大大简化您的单元/集成测试。要在多个设备上运行测试,请考虑使用Spoon

票数 17
EN

Stack Overflow用户

发布于 2012-08-23 03:07:53

  • 我在测试驱动程序(或者更确切地说是测试驱动程序)的活动中使用ActivityInstrumentationTestCase2,并为所有逻辑编写普通单元测试。这也帮助我从本质上是以UI为中心的Activities.
  • Mobile应用程序中分离出逻辑。因此,模拟用户界面是没有意义的,即使它使单元测试看起来像是功能测试。
  • 为了向意图添加额外内容,您可以为测试设置自定义意图,或者通过覆盖设置为所有测试设置意图。
  • 模拟给安卓带来了很多问题,所以我使用存根。

下面给出了一个示例。当您单击按钮时,该活动将显示Hello World -

代码语言:javascript
运行
复制
public class HelloWorldActivityTest extends
        ActivityInstrumentationTestCase2<HelloWorldActivity> {

    private HelloWorld activity;

    public HelloWorldActivityTest() {
        super(HelloWorldActivityTest.class);
    }

    public void testShouldRenderGreetingOnButtonClick() {
        activity = this.getActivity();
        Button button = (Button) activity.findViewById(R.id.btn_greet);
        TouchUtils.clickView(this, button);
        assertEquals("Hello World!",
                ((TextView) activity.findViewById(android.R.id.greeting_text))
                        .getText());
    }

}

编辑:自从我发布答案以来,的情况发生了变化。Mockito现在对Android有相当好的支持。为了进行测试,我们已经从ActivityInstrumentationTestCase2迁移到了Robolectric,只是为了在开发阶段利用JVM虚拟机的超快速度。Android测试框架非常适合集成和功能测试,但不适用于单元测试。

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/6261504

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档