У меня есть активность Android, и я хочу написать единичный тест, который проверяет, что в onResume
активность проверяет, доступен ли Интернет.Как протестировать статический метод invokation в Android?
public class MyActivity {
@Override
protected void onResume() {
super.onResume();
setContentView(R.layout.connect_to_server);
// Internet availability check
final IInternetAvailabilityChecker checker = InternetAvailabilityChecker.create(this);
if (!checker.isInternetAvailable())
{
Utils.showMessageBox(this, R.string.app_name,
R.string.internet_not_available);
return;
}
В тесте, я хочу, чтобы убедиться, что MyActiviy.onResume
вызывает метод InternetAvailabilityChecker.create
.
Как я могу это сделать (с любым свободным насмешливым фреймворком, совместимым с Android)?
Я попытался использовать PowerMock для этого (см. Пример ниже), но когда я пытаюсь запустить тест, я получаю ошибки, такие как MockTest.java:7: package org.powermock.core.classloader.nnotes не существует.
Maven:
<properties>
<powermock.version>1.5.1</powermock.version>
</properties>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-module-junit4</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.powermock</groupId>
<artifactId>powermock-api-mockito</artifactId>
<version>${powermock.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.10</version>
</dependency>
испытания Единица измерения:
@RunWith(PowerMockRunner.class)
@PrepareForTest({ InternetAvailabilityChecker.class })
public class MyActivityPowerMockTest {
@Test
@Ignore
public void test()
{
final IInternetAvailabilityChecker checker = mock(IInternetAvailabilityChecker.class);
when(checker.isInternetAvailable()).thenReturn(false);
mockStatic(InternetAvailabilityChecker.class);
expect(InternetAvailabilityChecker.create(any(Activity.class))).andReturn(checker);
replay(InternetAvailabilityChecker.class);
final MyActivity objectUnderTest = new MyActivity();
objectUnderTest.onResume();
// Verify that the method InternetAvailabilityChecker.create was called
verify(InternetAvailabilityChecker.class);
// TODO: Verify that Utils.showMessageBox has been invoked
}
}