web-dev-qa-db-ja.com

Androidモックされていない単体テスト

私はこのガイドに従いました https://sites.google.com/a/Android.com/tools/tech-docs/unit-testing-support しかし、私はこのエラーで立ち往生しています:

junit.framework.AssertionFailedError: Exception in constructor: testSaveJson (Java.lang.RuntimeException: Method put in org.json.JSONObject not mocked. See https://sites.google.com/a/Android.com/tools/tech-docs/unit-testing-support for details.

ガイドが言うようにGradleビルドで変更しましたが、違いはありません

 testOptions { 
    unitTests.returnDefaultValues = true
  }
42
user1634451

JSONはAndroid SDKにバンドルされているので、スタブにアクセスするだけです。JSONjarを使用すると、実際のオブジェクトを使用できます。

これを行うには、これをbuild.gradleに追加する必要があります。

testImplementation 'org.json:json:20140107'

または、jarをダウンロードして含めることができます。

testCompile files('libs/json.jar')

JSONの最新バージョンはJava 8用に構築されているため、 20140107 を取得する必要があることに注意してください。

88
Ben Pearson

純粋なjUnitorg.json.JSONObjectの一部であるAndroid Frameworkでテストを実行しようとしていると思います。

ドキュメントから:

単体テストの実行に使用されるAndroid.jarファイルには、実際のコードが含まれていません-実際のデバイスのAndroidシステムイメージ。代わりに、すべてのメソッドが例外をスローします(デフォルト) 。

LogやTextUtilsなどのクラスを使用する場合、デフォルトの動作に問題があることを認識しており、将来のリリースで可能なソリューションを評価します。

エミュレートする必要がありますAndroidこの目的に使用できる環境 Robolectric またはInstrumentationTests

3
ar-g