7

AndroidでJMockを使用するにはどうすればよいですか?それは不可能だと言っている投稿がいくつかありますが、確かにそれを行う方法はありますか?

問題は、AndroidがJMockjarファイルを認識できるようにすることであるようです。では、jarをアセットに入れて、カスタムクラスローダーを作成するという解決策があるのではないでしょうか。それは大変なことのように思えますが、うまくいくように聞こえますか?

4

2 に答える 2

8

JMockをAndroidオープンソーステストプロジェクト内で動作させています。

はい:JMockコードは手元のデバイスで実行されます;-)

私が使用した:

  • jmock-2.5.1.jar
  • 再パッケージ化されたhamcrest-all-1.1.jar(説明します)
  • jmock-junit3-2.5.1.jar

Android JMockテストケースについては、以下を参照してくださいhttp://github.com/olibye/ToneDial/blob/master/ToneDialTest/src/net/xpdeveloper/dialer/test/TestDialServiceTest.java

これが私が克服しなければならなかった3つの問題です:


ハムクレストパッケージ

Hamcrestの複数のパッケージは、Androidパッケージの検証に失敗します。

Android ADKで発生するエラーは次のとおりです。-最終アーカイブの生成エラー:重複エントリ:LICENSE.txt

解決

同じディレクトリにあるhamcrest-core-1.1.jarを解凍します。hamcrest-library-1.1.jarを解凍します。

この2回目の解凍により、MANIFEST.MFとLICENCE.TXTが上書きされます。

zip ../hamcrest-all-1.1.jar

最初は、JMockのSteveとNatでこれを提起しました

しかし、それは実際にはハムクレストでのジョーのパッケージングの問題です(だから私はそこに投稿しました;-)


JUnitパッケージング

EclipseのJUnitプラグインには、Hamcrestのサブセットが含まれています。

解決策 Eclipseプロジェクトのプロパティで、JMockの後にJUnitライブラリをクラスパスの下に移動する必要があります。


Androidパッケージ

JUnit v3はandroid.jarの一部であるため、JUnit4スタイルのJMockテストを使用することはできません。まだ注釈はありません;-)

于 2010-10-12T15:53:59.440 に答える
1

時代は変わり、@ byeoの答えは、修正と改善が行われているため、必要以上に複雑になっています。

Android Studio 3.1.4では、少なくともユニットテストでは、JMockとHamcrestを簡単に動作させることができました。build.gradleファイルに次の依存関係を追加しました。

dependencies{
    ....
    testImplementation files('../../../../lib/jmock-2.8.3/jmock-2.8.3.jar')
    testImplementation files('../../../../lib/jmock-2.8.3/jmock-junit4-2.8.3.jar')
    testImplementation files('../../../../lib/jmock-2.8.3/jmock-legacy-2.8.3.jar')
    testImplementation files('../../../../lib/jmock-2.8.3/objenesis-2.1.jar')
    testImplementation files('../../../../lib/jmock-2.8.3/hamcrest-core-1.3.jar')
    testImplementation files('../../../../lib/jmock-2.8.3/hamcrest-library-1.3.jar')
    testImplementation files('../../../../lib/cglib-nodep-3.2.5.jar')
    ....
}

ただし、次の質問があるため、エミュレータまたは実際のハードウェアを使用するテストでJMockが正しく機能するかどうかはわかりません。

JMock jarはAndroidテストプロジェクト内では機能しません(プロジェクトはビルドされません)

于 2018-10-23T16:13:46.697 に答える