This training covers techniques for running unit tests on local machines, using mock objects in local unit tests, and building instrumented unit tests to run on a device or emulator. Change-Id: I9fee9ac3bd7382fb158145600b1850775edb687d
63 lines
2.8 KiB
Plaintext
63 lines
2.8 KiB
Plaintext
page.title=Building Effective Unit Tests
|
|
page.tags=testing,androidjunitrunner,junit,unit test
|
|
|
|
trainingnavtop=true
|
|
startpage=true
|
|
|
|
@jd:body
|
|
|
|
<div id="tb-wrapper">
|
|
<div id="tb">
|
|
<h2>
|
|
You should also read
|
|
</h2>
|
|
<ul>
|
|
<li>
|
|
<a href="{@docRoot}tools/testing-support-library/index.html">Testing Support Library</a>
|
|
</li>
|
|
</ul>
|
|
</div>
|
|
</div>
|
|
|
|
<p>Unit tests are the fundamental tests in your app testing strategy. By creating and running unit
|
|
tests against your code, you can easily verify that the logic of individual units is correct.
|
|
Running unit tests after every build helps you to
|
|
quickly catch and fix software regressions introduced by code changes to your app.
|
|
</p>
|
|
|
|
<p>A unit test generally exercises the functionality of the smallest possible unit of code (which
|
|
could be a method, class, or component) in a repeatable way. You should build unit tests when you
|
|
need to verify the logic of specific code in your app. For example, if you are unit testing a
|
|
class, your test might check that the class is in the right state. Typically, the unit of code
|
|
is tested in isolation; your test affects and monitors changes to that unit only. A
|
|
<a href="http://en.wikipedia.org/wiki/Mock_object" class="external-link">mocking framework</a>
|
|
can be used to isolate your unit from its dependencies.</p>
|
|
|
|
<p class="note"><strong>Note:</strong> Unit tests are not suitable for testing
|
|
complex UI interaction events. Instead, you should use the UI testing frameworks, as described in
|
|
<a href="{@docRoot}training/testing/ui-testing/index.html">Automating UI Tests</a>.</p>
|
|
|
|
<p>For testing Android apps, you typically create these types of automated unit tests:</p>
|
|
|
|
<ul>
|
|
<li><strong>Local tests:</strong> Unit tests that run on your local machine only. These tests are
|
|
compiled to run locally on the Java Virtual Machine (JVM) to minimize execution time. Use this
|
|
approach to run unit tests that have no dependencies on the Android framework or have dependencies
|
|
that can be filled by using mock objects.</li>
|
|
<li><strong>Instrumented tests:</strong> Unit tests that run on an Android device or emulator.
|
|
These tests have access to instrumentation information, such as the
|
|
{@link android.content.Context} for the app under test. Use this approach to run unit tests that
|
|
have Android dependencies which cannot be easily filled by using mock objects.</li>
|
|
</ul>
|
|
|
|
<p>The lessons in this class teach you how to build these types of automated unit tests.</p>
|
|
|
|
<h2>Lessons</h2>
|
|
<dl>
|
|
<dt><strong><a href="local-unit-tests.html">
|
|
Building Local Unit Tests</a></strong></dt>
|
|
<dd>Learn how to build unit tests that run on your local machine.</dd>
|
|
<dt><strong><a href="instrumented-unit-tests.html">
|
|
Building Instrumented Unit Tests</a></strong></dt>
|
|
<dd>Learn how to build unit tests that run on an Android device or emulator.</dd>
|
|
</dl> |