Robolectric是单片(/单片段) - 测试

时间:2014-09-15 20:49:33

标签: android android-fragments robolectric

我刚刚开始尝试使用Robolectric,因为我正在玩Dynamic Single/Dualpane-Fragment example from the google developer page我想在那里整合它并做一些基本的测试。

我想测试的第一件事是单/双窗格处理是否正常工作

所以它基本上归结为:

  • 小型设备&肖像 - >单窗格
  • 大型设备& langscape - >双窗格

由于该示例的代码是在线的(因为它是Android-Studio中的标准模板),我不会再在此处复制它。只有一件事:在启动时,活动通过检查:

来确定其单窗格还是双窗格
 if (findViewById(R.id.exercise_detail_container) != null) [..]

对于Robolectric而言,它似乎总是双重的。

所以我的单一测试非常简单:

@Config(emulateSdk = 18)
@RunWith(RobolectricTestRunner.class)

public class SinglePaneTest {
    private ExerciseListActivity activity;
    private FragmentManager fragmentManager;

    @Before
    @Config(qualifiers = "port-small")
    public void setup() {
        this.activity = Robolectric.buildActivity(ExerciseListActivity.class).create().resume().get();
        this.fragmentManager = activity.getFragmentManager();
    }
    @Test
    @Config(qualifiers = "port-small")
    public void testSinglePane() {
        assertNull(activity.findViewById(R.id.exercise_detail_container));
    }
}

但测试失败。

有人可以告诉我为什么吗?这应该是完美的,不应该吗?

仅供记录:是的,在模拟器中一切正常。

2 个答案:

答案 0 :(得分:1)

尝试撤消订单:small-port不知道是否会修复,但确实必须按照表格中的顺序显示:http://developer.android.com/guide/topics/resources/providing-resources.html

  

如果对资源目录使用多个限定符,则必须按照表中列出的顺序将它们添加到目录名中。

Robolectric example支持此排序:

  

资源解析的限定符,例如“fr-normal-port-hdpi”。

答案 1 :(得分:0)

这似乎与robolectric的2.4版本有关!