2

我们在工作中将 Robolectric 用于我们的测试用例,这似乎不能很好地工作 Action Bar Sherlock。

问题是我收到一条No implementations match configuration消息,因为Build.VERSION.SDK_INT通过 robolectric 运行时 == 0。

如果有人对让 ABS 与 Robolectric 良好合作的最佳方式有任何想法,我很想知道。如果我发现我会在这里发布我的结果,但似乎很难找到有关如何使这个流行的工具包和库一起工作的信息。

4

2 回答 2

8

解决这个问题的两种方法:

  1. 使用此总方法调用将Robolectric 的Build.SDK_INT值更改为实际值:RobolectricTestRunner.setStaticValue(Build.VERSION.class, "SDK_INT", 15);
  2. 编写您自己的 ActionBarSherlock 实现,该实现从现有实现之一扩展并使用@ActionBarSherlock.Implementation(api = 0)(不要忘记调用ActionBarSherlock.registerImplementation)进行注释。
于 2012-08-20T15:09:03.940 回答
1

对于较新版本的Robolectric 2.2,您可以像这样更改Build.VERSION.SDK_INT值:

Robolectric.Reflection.setFinalStaticField(Build.VERSION.class, "SDK_INT", 15);
于 2014-08-28T14:33:24.737 回答