1

onResumeAndroid アクティビティがあり、アクティビティでインターネットが利用可能かどうかを確認する単体テストを作成したいと考えています。

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.annotations does not existのようなエラーが発生します。

メイヴン:

<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
    }
}
4

1 に答える 1

0

Maven の依存関係がないようです。このクエリによると、注釈は次のように提供されます。

  • org.powermock / powermock-コア
  • org.powermock / powermock-easymock-single-jar-release-full
  • org.powermock / powermock-mockito-single-jar-release-full
于 2013-09-22T01:40:07.777 に答える