JUnit+的单元测试用例(Android中的Robolectric或Mockito或两者)



这是我第一次在Android中编写单元测试用例。

所以我搜索了很多东西。

  1. Robolectric framewordk-在JVM上运行
  2. Mockito框架-模拟对象

所以我对Robolectric&Mokito。

  1. 我应该只在Android应用程序中与JUnit一起使用Robolectric吗
  2. 我应该只在Android应用程序中使用Mockito和JUnit吗
  3. 我应该同时使用这两个框架吗
  4. Mockito&机器人

我已经搜索了Mokito&Robolectric,但没有得到任何正确的答案。

请提出建议。

它们的用法略有不同,我倾向于在项目中同时使用这两种用法。

Mockito

用于制作您的类的mock。

当你测试一个特定的类时,你可以用Mockito模拟它的所有依赖项。

在可能的情况下,大多数测试都应该使用mockito。为了实现这一点,大多数人将他们的代码拆分为MVP等,其中业务逻辑与视图逻辑分离。这样,您的业务逻辑(Presenter)就不了解(或依赖)Android库,也不需要对它们进行模拟。

机器人

是一个库,包含许多Android类的mock。

Robolectric测试运行程序在测试运行时注入这些"阴影对象"来代替实际的Android类。这使得测试可以在JVM上运行,而无需启动Android实例。

当使用MVP时,您的视图层往往由活动/片段实现,这就是您可以使用Robolectric模拟这些的地方。

票据

仅在必要时使用Robolectric。它基本上重新实现了Android框架的一部分,但并不总是以完全相同的方式。

您可能还需要另一个库,如PowerMock。这允许模拟静态类(如Math),也可以用于模拟静态Android类(如TextUtils)。

两者都与JUnit 一起使用

Mockito一个人就可以覆盖大多数情况。

然而,Robolectric也可以在Android组件上提供有限的操作,如单元测试中的"活动"或"片段"(不是仪器测试,它不依赖于Android SDK),它不需要任何模拟器或设备,并且比仪器测试快得多。

我的建议是:使用Mockito进行单元测试,使用Espresso进行UI测试,因为它们是Android的半官方测试框架。

如果对Android SDK有一些依赖,请在单元测试中添加Robolectric。

首先,我们需要了解Roboelectric和Mockito是android测试驱动开发中常用的两种不同工具。所以大多数情况下,你会在同一个项目中找到这两种工具。

下面我将解释两者的常见用例-

Mockito用于模拟依赖关系,这意味着如果你想在测试环境中访问一个真实的对象,那么你需要伪造它,或者我们可以说mock它。现在,用Mockito模拟对象变得非常容易。

Roboelectric是安卓系统的行业标准单元测试框架。使用Robolectric,您的测试可以在JVM内的模拟Android环境中运行,而无需模拟器的开销。使用roboelectric编写的简单测试是

`@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!"));
}
}`

相关内容

  • 没有找到相关文章

最新更新