我刚刚开始尝试使用Robolectric,因为我正在玩Dynamic Single/Dualpane-Fragment example from the google developer page我想在那里整合它并做一些基本的测试。
我想测试的第一件事是单/双窗格处理是否正常工作。
所以它基本上归结为:
由于该示例的代码是在线的(因为它是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));
}
}
但测试失败。
有人可以告诉我为什么吗?这应该是完美的,不应该吗?
仅供记录:是的,在模拟器中一切正常。
答案 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版本有关!