Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit bd2f5388 authored by smain@google.com's avatar smain@google.com Committed by android-build-merger
Browse files

add info about how to return default values from android.jar bug: 30757670 am: abfa7e2c

am: 93d8ffc4

Change-Id: Id4301a4fb462e34428912c12ec570ddfa9010fb2
parents 059e260e 93d8ffc4
Loading
Loading
Loading
Loading
+30 −6
Original line number Diff line number Diff line
@@ -112,12 +112,16 @@ Hamcrest matchers</a> (such as the {@code is()} and {@code equalTo()} methods) t
returned result against the expected result.</p>

<h3 id="mocking-dependencies">Mock Android dependencies</h3>
<p>
By default, the <a href="{@docRoot}tools/building/plugin-for-gradle.html">
Android Plug-in for Gradle</a> 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.
</p>

<p>By default, the <a href=
"{@docRoot}tools/building/plugin-for-gradle.html">Android Plug-in for
Gradle</a> 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).</p>

<p>
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</a> and the
class="external-link">sample code</a>.
</p>

<p>If the exceptions thrown by Android APIs in the
<code>android.jar</code> 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 <code>build.gradle</code> file:</p>

<pre>
android {
  ...
  testOptions {
    unitTests.returnDefaultValues = true
  }
}
</pre>

<p class="caution"><strong>Caution:</strong>
Setting the <code>returnDefaultValues</code> property to <code>true</code>
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.</p>


<h2 id="run">Run Local Unit Tests</h2>