是否可以与Robolectric进行集成测试?

时间:2013-10-23 12:41:32

标签: android tdd integration-testing robolectric

我有MainActivitySubActivity

MainActivity有一个按钮,触发startActivityForResult来电SubActivity

SubActivy有责任将记录添加到某个存储库,以便在调用finish时,onActivityResult方法中的MainActivty必须调用{{1}适配器:

notifyDataSetChanged

现在,有没有办法用Robolectric测试进来?现在我能够通过点击 @Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { if(resultCode == RESULT_OK && requestCode == 1) { adapter.notifyDataSetChanged(); } } MainActivity来测试调用的意图(使用Shadow对象),但是我看不到触发SubActivity on { {1}}(将新元素添加到存储库中)以便我可以检查适配器是否在finish上显示新元素

我是Roboelectric的新手,所以如果我想测试的内容超出了这个框架的范围,我就不会这样做。我应该使用Mockito吗?

2 个答案:

答案 0 :(得分:3)

我会对这两项活动进行两次单元测试。

MainActivityTest

  1. 检查SubActivity意图是否已启动
  2. 检查onActivityResult是否刷新了RESULt_OK
  3. 上的列表

    SubActivityTest

    1. 向数据库添加记录
    2. 使用RESULT_OK
    3. 结束

      对于整个验收测试,我会使用 Robotium Calabash

答案 1 :(得分:3)

Robolectric不是集成测试框架。它是一个框架,允许您编写单元测试并在桌面JVM上运行它们。欧根的回答是:用Robolectric隔离测试每项活动。如果您想测试整个应用程序的流程(包含多个活动,服务等),请使用Google的InstrumentationTestCase框架,RobotiumCalabash