2013-09-21 4 views
1

У меня есть активность 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 
    } 
} 

ответ

0

Вы, по всей видимости, отсутствует зависимость Maven. В соответствии с this query аннотации снабжены:

  • org.powermock/powermock-сердечника
  • org.powermock/powermock-EasyMock-сингл-банку-релиз-полная
  • org.powermock/powermock-Mockito -раздельно-jar-release-полный
Смежные вопросы