From abfa7e2c65b9faf55afa5dc2ed62563ee2264d0a Mon Sep 17 00:00:00 2001
From: "smain@google.com"
-By default, the -Android Plug-in for Gradle executes your local unit tests against a modified -version of the {@code android.jar} library, which does not contain any actual code. Instead, method -calls to Android classes from your unit test throw an exception. -
+ +By default, the Android Plug-in for +Gradle executes your local unit tests against a modified version of the +{@code android.jar} library, which does not contain any actual code. Instead, +method calls to Android classes from your unit test throw an exception. This is +to make sure you test only your code and do not depend on any +particular behavior of the Android platform (that you have not explicitly +mocked).
+You can use a mocking framework to stub out external dependencies in your code, to easily test that your component interacts with a dependency in an expected way. By substituting Android dependencies @@ -195,6 +199,26 @@ class="external-link">Mockito API reference and the class="external-link">sample code.
+If the exceptions thrown by Android APIs in the
+android.jar
are problematic for your tests, you can change the behavior so that methods
+instead return either null or zero by adding the following configuration in your project's
+top-level build.gradle
file:
+android { + ... + testOptions { + unitTests.returnDefaultValues = true + } +} ++ +
Caution:
+Setting the returnDefaultValues
property to true
+should be done with care. The null/zero return values can introduce
+regressions in your tests, which are hard to debug and might allow failing tests
+to pass. Only use it as a last resort.