我正在使用Robolectric 2.2并希望稍微改进我的测试。目前我想检查我的方法是否调用android.support.v4.app.FragmentManager.beginTransaction()
。要测试的源包含以下行:
public void setFragmentManager(FragmentManager fragmentManager) {
this.fragmentManager = fragmentManager;
}
public void onTabChanged(String tabId) {
:
FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
这样可以轻松模拟这样的FragmentTransaction
。我想我知道如何用Mockito做到这一点,但Robolectric声称不需要进一步的模拟框架:
无需模拟框架
Robolectric的另一种方法是使用模拟框架,例如 Mockito或Android Mock嘲笑Android SDK。虽然这是一个 有效的方法,它往往产生基本上相反的测试 应用程序代码的实现。
Robolectric允许更接近黑盒测试的测试风格, 使测试更有效的重构和允许测试 专注于应用程序的行为而不是 Android的实现。您仍然可以使用模拟框架 如果你愿意,可以使用Robolectric。
现在我不确定我是否找不到如何用Robolectric解决我的问题,或者我应该继续使用Mockito。我试图让它与org.fest.reflect.*
一起使用,但我失败了。
我想知道的是:
答案 0 :(得分:1)
我刚刚快速检查了Robolectric
影子类和FragmentManager
API。我没有任何方法可以帮助处理待处理的交易。
所以我建议您使用Mockito
,直到有这样的方法。由于更好的代码设计(不需要像您的情况Robolectric
那样进行不必要的注入),因此Mockito
使用首选FragmentManager
优先于{{1}}