testDebugを実行したときにのみandroid.util.Logがmockedされていないので、ユニットのテストがメソッドdで失敗しています。 testReleaseを実行している場合はすべて正常であり、正しく通過します。 これはなぜ起こっているのですか? コンソールとAndroidスタジオからgradleを実行するときと同じことが起こります。Androidユニットのテストでデバッグに失敗するビルドタイプ
答えて
ここでは、将来の参考のためにこれをどのように解決したか説明します。 リリースではなくデバッグで動作するテストの問題は、Log.d(およびアンドロイドフレームワークのフレンド)が正しく嘲笑されなかったためです。 リリースとしてビルドされたときに動作する理由は、ビルド設定のこのプロパティに基づいてログが条件付きだったためです。基本的にif(BuildConfig.type!= "Release")Log.d(...)があり、コンパイラは最終値のためにこのブロックを削除するため、リリースをテストするときには呼び出されません。 静的メソッドLog.dをモックするにはPowerMockを使用しました。 Mockingは簡単でしたが、Power Mockを設定することは本当に面倒ですので、おそらくそれを行うより良い方法があるかもしれません。
チェックアウト"Method ... not mocked" Android Studioプロジェクトサイトのリンク。 それは言う:
ユニットテストを実行するために使用されるandroid.jarファイルは、任意の実際のコードが含まれていません - 実際のデバイスでAndroidシステムイメージで提供されています。代わりに、すべてのメソッドは例外をスローします(デフォルトで)。これはユニットテストがコードをテストするだけで、Androidプラットフォームの特定の動作(Mockitoなどを使って明示的に嘲笑していない)には依存しないことを確認するためです。それが問題のあることが判明した場合、あなたはこの動作を変更するためにあなたのbuild.gradleするには、以下のスニペットを追加することができます。
build.gradle
android {
// ...
testOptions {
unitTests.returnDefaultValues = true
}
}
を私たちは、ログインまたはTextutilsなどと意志のようなクラスを使用する場合、デフォルトの動作に問題があることを知っています将来のリリースで可能なソリューションを評価してください。
ここでは例外を取り除くために使用しました。
- 1. テストが失敗した場合、Android jenkinsビルドに失敗する
- 2. MVC3ユニットのテストに失敗しました。System.Security.VerificationException
- 3. Djangoで失敗したテストをデバッグするには?
- 4. Rubyテスト:ユニット、テストスイート内の各テストケースの失敗/合格ステータスを知る方法?
- 5. ビルドタイプがjniデバッグ可能でないエラー
- 6. デバッグ「xcodeで起動に失敗」
- 7. MSテストでコレクションが失敗する
- 8. Rspecテストがネームスペースで失敗する
- 9. ノーズが遅いテストに失敗する
- 10. ランダムにBehatテストが失敗する
- 11. アサーションのデバッグに失敗しました。
- 12. Iron PythonとVS2010のデバッグに失敗
- 13. シンプルRSpecのテストの失敗
- 14. gradle-android-test-pluginでテストに失敗した場合は、gradleビルドに失敗しないでください。
- 15. Spring 3.0.1のビルド - 失敗テスト
- 16. オートテストは統合テストのテストに失敗する
- 17. Androidシミュレータが失敗する
- 18. Android Chromecast:ローカルオーディオファイルのキャストに失敗する
- 19. Androidの起動に失敗する
- 20. jmDNSのAndroidビルドに失敗する
- 21. Junitテスト:失敗は何ですか?
- 22. 部品番号 - 失敗テスト
- 23. ログイン失敗のエラーのデバッグT-SQL
- 24. はキュウリのテストに失敗した
- 25. Junit4テストJsonSyntaxExceptionが失敗する
- 26. RoR - 失敗/エラー:response.should have.selector、統合テストの失敗
- 27. ユニットをAngularJSでコントローラを定義するユニットをテストする
- 28. Ubuntu PHPでPCNTLを有効にする - テストが失敗する
- 29. リリースビルドに失敗し、デバッグしないのはなぜですか?
- 30. cmakeがandroid ndkで失敗する