15

新しい Android テスト プロジェクトを作成しました。https://code.google.com/p/powermock/downloads/listから powermock-mockito-junit-1-1.5.zip をダウンロードしました。すべてのライブラリをテスト プロジェクトのlibsフォルダーに追加しました。テスト クラスは非常に単純なオブジェクトです。

package com.test.test;

import org.junit.runner.RunWith;
import org.powermock.modules.junit4.PowerMockRunner;

import android.util.Log;

@RunWith(PowerMockRunner.class)
public class TestTestAndroid {

    public void testRuns() {
        Log.e("test", "Test case is called");
    }
}

次に、Eclipse からプロジェクトを実行するか、コマンド ラインからプロジェクトを作成してみます。同じエラーが表示されます:

Conversion to Dalvik format failed: Unable to execute dex: Multiple dex files define Lorg/hamcrest/Description;

junit-4.8.2.jar結局のところ、とmockito-all-1.9.5.jardefineの両方org.hamcrest.Descriptionです。明らかな理由から、Mockito jar を含める必要があります。Mockito が必要です。@RunWithJUnit は Android から別バージョンが提供されていますが、アノテーションが含まれていない古いバージョンです。

org.hamcrest.Description競合する問題なしに、Android プロジェクトで powermock と mockito を使用する方法に誰かが答えることができますか?

4

2 に答える 2

12

実際、これは完全に誤りであることがわかりました (少なくとも最新バージョンでは)。

私が持っているコードをテストしたいモジュールの私のgradleセットアップで

// Mockito and PowerMock
androidTestCompile ('org.powermock:powermock-mockito-release-full:1.6.0') {
    exclude module: 'hamcrest-core'
    exclude module: 'objenesis'
}

そしてすべてがうまくいきます。私が使用する限り:

@RunWith(PowerMockRunner.class) @PrepareForTest(ClassToMock.class)

クラスに注釈を付ける (たとえば、Robolectric では実行できないが、CI 環境では問題ない)

于 2014-12-05T05:54:44.567 に答える