diff --git a/docs/html/training/testing/unit-testing/local-unit-tests.jd b/docs/html/training/testing/unit-testing/local-unit-tests.jd index 8b109ee36a0ee..d19de4f6544ad 100644 --- a/docs/html/training/testing/unit-testing/local-unit-tests.jd +++ b/docs/html/training/testing/unit-testing/local-unit-tests.jd @@ -112,12 +112,16 @@ Hamcrest matchers (such as the {@code is()} and {@code equalTo()} methods) t returned result against the expected result.
-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.