当我用Robolectric对GPS功能进行单元测试时,我应该注释什么?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了当我用Robolectric对GPS功能进行单元测试时,我应该注释什么?相关的知识,希望对你有一定的参考价值。

我指的是以下网站http://googletesting.blogspot.ca/2010/12/test-sizes.html。有人提到,如果我们的测试方法正在访问网络功能,我们应该注释@LargeTest。我正在使用Roboloectric进行单元测试。我的方法使用shadowLocationManager来模拟GPS位置。我不知道我应该为我的GPSTest注释什么。我应该去@Test或去@LargeTest。我刚开始用Robolectric学习单元测试。到目前为止,我一直在使用@Test注释进行所有测试,但我没有遇到任何问题。有人可以建议我为Robolectric遵循正确的注释。

编辑:@SmallTest@MediumTest@LargeTest注释在我的GPS测试中失败,@Test通过了测试。这些注释对Robolectric不起作用吗?如果是这样,那么我如何用不同的注释标记我的测试?

如果您想查看我的测试方法,请查看以下代码:

@Before
public void setUp() {
  mainActivity = new Settings();
  mainActivity=Robolectric.buildActivity(Settings.class).create().get();
}
@Test
public void shouldReturnTheLatestLocation() {
    LocationManager locationManager = (LocationManager)
            Robolectric.application.getSystemService(Context.LOCATION_SERVICE);
    ShadowLocationManager shadowLocationManager = Robolectric.shadowOf(locationManager);
    Location expectedLocation = location(locationManager.NETWORK_PROVIDER, 12.0, 20.0);

    shadowLocationManager.simulateLocation(expectedLocation);

  System.out.print("expected location is "+expectedLocation.getLatitude()+expectedLocation.getLongitude());
    Location actualLocation = mainActivity.latestLocation();
   System.out.print("actual location is "+actualLocation.getLatitude()+actualLocation.getLongitude());
    assertEquals(expectedLocation, actualLocation);
}

BottomLine :(我想我现在可以期待一个upvote ......感到自豪:D:P)

答案

你没错,那些注释不适用于Robolectric。

在使用在设备上运行测试的android InstrumentationTestRunner时,它们非常有用。

Robolectric在JVM上运行测试,完全不同的野兽。

以上是关于当我用Robolectric对GPS功能进行单元测试时,我应该注释什么?的主要内容,如果未能解决你的问题,请参考以下文章

配置同时使用PowerMock和Robolectric对Android进行单元测试

配置同时使用PowerMock和Robolectric对Android进行单元测试

Android单元测试:内容更新篇

Robolectric 和 Android SDK 29

Robolectric 单元测试中使用 Ressource

GPS怎样根据测点计算距离