这是我第一次用Android编写单元测试用例。
所以我搜索了很多东西。
所以我对机器人有些怀疑
我在寻找Mokito之间的区别
请建议。
它们的用法略有不同,我倾向于在我的项目中使用两者。
莫奇托
用于对您的类进行模拟。
当您测试一个特定的类时,您可以使用Mockito模拟它的所有依赖项。
在可能的情况下,您的大多数测试都应该使用mockito。为了实现这一点,大多数人将他们的代码分成MVP等,其中业务逻辑与视图逻辑分离。这样,您的业务逻辑(Presenter)对Android库没有知识(或依赖项),也不需要对它们进行模拟。
机器人
是一个包含许多Android类模拟的库。
当测试运行时,Robolectric测试运行器将这些影子对象注入到实际的Android类中。这使得测试可以在JVM上运行,而无需启动Android实例。
当使用MVP你的视图层往往是由活动/片段实现的,这就是你可以使用Robolectric来模拟这些的地方。
注释
仅在必要时使用Robolectric。它基本上重新实现了Android框架的部分内容,但并不总是以完全相同的方式。
您可能还需要另一个库,例如PowerMock。这允许模拟静态类,例如Math,或者可用于模拟静态Android类,例如TextUtils。
两者都与JUnit一起使用
仅Mockito就可以涵盖大多数情况。
然而,Robolectric也可以在Android组件上提供有限的操作,例如单元测试中的Activity或Fragment(不是插桩测试,它不依赖于AndroidSDK),它不需要任何模拟器或设备,并且比插桩测试快得多。
我的建议:使用Mockito进行单元测试,使用Espresso进行UI测试,因为它们是Android的半官方测试框架。
如果有一些对AndroidSDK的依赖,请在单元测试中添加Robolectric。
首先,我们需要了解Robo电和Mockito是android测试驱动开发中常用的两种不同工具。所以大多数情况下,您会在同一个项目中找到这两种工具。
下面我将解释两者的常见用例——
Mockito用于模拟依赖关系,这意味着如果你想在测试环境中访问一个真实的对象,那么你需要伪造它,或者我们可以说模拟它。现在用Mockito模拟对象变得非常容易。
机器人电气是Android系统的行业标准单元测试框架。使用机器人电气,您的测试在JVM内的模拟Android环境中运行,没有模拟器的开销。使用机器人电气编写的简单测试是
`@RunWith(AndroidJUnit4.class)
public class MyActivityTest {
@Test
public void clickingButton_shouldChangeResultsViewText() throws Exception {
Activity activity = Robolectric.setupActivity(MyActivity.class);
Button button = (Button) activity.findViewById(R.id.press_me_button);
TextView results = (TextView) activity.findViewById(R.id.results_text_view);
button.performClick();
assertThat(results.getText().toString(), equalTo("Testing Android Rocks!"));
}
}`