📄 instrumentation_testing.html
字号:
<html><head><meta http-equiv="content-type" content="text/html; charset=utf-8"/><title>Android - Porting Guide</title><script src="http://www.google.com/uds/api?file=uds.js&v=1.0&key=internal-codesite" type="text/javascript"></script><script src="http://code.google.com/js/jquery.js" type="text/javascript"></script><script type="text/javascript">var _tocPath_ = 'http://code.google.com/android/_toc.ezt';</script><script src="http://code.google.com/js/codesite.pack.01312008.js" type="text/javascript"></script><script language="JavaScript">function resizeHeight() { if(document.getElementById && !(document.all)) { height= document.getElementById('doxygen').contentDocument.body.scrollHeight + 20; document.getElementById('doxygen').style.height = height; } else if(document.all) { height= document.frames('doxygen').document.body.scrollHeight + 20; document.all.doxygen.style.height = height; }}</script><link href="http://code.google.com/css/codesite.pack.01312008.css" type="text/css" rel="stylesheet"></link><!--[if IE]><link rel="stylesheet" type="text/css" href="/css/iehacks.css" /><![endif]--><script src="http://code.google.com/android/assets/search_autocomplete.js"></script><link rel="stylesheet" type="text/css" href="http://code.google.com/css/semantic_headers.css" /><link rel="stylesheet" type="text/css" href="http://code.google.com/android/assets/style.css" /><script> jQuery(document).ready(function() { jQuery("pre").addClass("prettyprint"); }); </script><style type="text/css"><!--h1,h2,h3 { color: #000000;}--></style></head><body class="gc-documentation"><div id="gc-container"><a name="top"></a><div id="skipto"> </div><div id="langpref"> <!--<a class="dropdown" href="/">English</a> <span>|</span> <a href="/more/">Site Directory</a> --></div><div id="gc-header"> <div id="logo"><a href="http://code.google.com/android/index.html"><img src="http://code.google.com/android/images/logo_android.gif" alt="Android"/></a></div> <div id="search" style="inline"> <div id="searchForm" class="searchForm" style="height: 44px;"> <!--previously form was here--> </div> <!-- end searchForm --> <noscript> <style type="text/css"> .searchForm { display : none !important; } .searchForm2 { display : inline !important; } </style> </noscript> <div id="searchForm2" class="searchForm2" style="display:none"> <form id="searchbox_001456098540849067467:6whlsytkdqg" action="http://www.google.com/cse"> <input type="hidden" name="cx" value="001456098540849067467:6whlsytkdqg" /> <input type="hidden" name="cof" value="FORID:0" /> <input type="text" name="q" maxlength="2048" size="41" autocomplete="off" title="Google Code Search"/> <input type="submit" name="sa" value="Search" title="Search"/> <br/> <div class="greytext">e.g. "ajax apis" or "open source"</div> </form> </div> <!-- end searchForm2 --> </div> <!-- end search --></div><!-- end gc-header --><div id="searchControl" class="search-control"></div><!--[if IE]><iframe id="backiFrame" name="backiFrame" src='/dummy.html' style="display:none"></iframe><![endif]--><div id="codesiteContent"><a name="gc-topnav-anchor"></a><div id="gc-topnav"> <h1>Android Platform Development Kit</h1> <ul class="gc-topnav-tabs"> <li id="sdk_link"> <a href="http://code.google.com/android/index.html" title="Android Software Development Kit">SDK</a> </li> <li id="docs_link"> <a href="index.html" title="Official Android documentation">Docs</a> </li> <li id="faq_link"> <a href="http://code.google.com/android/kb/index.html" title="Answers to frequently asked questions about Android">FAQ</a> </li> <li> <a href="http://android-developers.blogspot.com/" title="Official Android blog">Blog</a> </li> <li> <a href="http://code.google.com/android/groups.html" title="Android developer forum">Group</a> </li> <li> <a href="http://code.google.com/android/terms.html" title="Android terms of service">Terms</a> </li> <li> <a href="mailto:android-pdk-feedback@google.com?subject=PDK%20Feedback&body=(filed%20from:%20instrumentation_framework.html%20v0.6%20-%2025%20November%202008)%0D%0A%0D%0ASUMMARY:%0D%0A%0D%0A%0D%0A%0D%0ASTEPS%20TO%20REPRODUCE:%0D%0A%0D%0A%0D%0A%0D%0AADDITIONAL%20NOTES:">Report a Problem</a> </li> </ul></div><!-- end gc-topnav --><div class="g-section g-tpl-180"><a name="gc-toc"></a><div class="g-unit g-first" id="gc-toc"> <ul> <li> <h1><a href="index.html">Documentation</a></h1> <ul> <li> <strong>Introduction</strong> <ul> <li><a href="system_requirements.html">Device Requirements</a></li> </ul> </li> <li> <strong>Dev Environment Setup</strong> <ul> <li><a href="build_system.html">Build System</a></li> </ul> </li> <li> <strong>Basic Bring up</strong> <ul> <li><a href="build_new_device.html">Building New Device</a></li> <li><a href="bring_up.html">Bring up</a></li> <li><a href="keymaps_keyboard_input.html">Keymaps and Keyboard</a></li> <li><a href="display_drivers.html">Display Drivers</a></li> </ul> </li> <li> <strong>Multimedia</strong> <ul> <li><a href="audio_sub_system.html">Audio</a></li> <li><a href="camera.html">Camera</a></li> </ul> </li> <li> <strong>Power Management</strong> <ul> <li><a href="power_management.html">Power Management</a></li> </ul> </li> <li> <strong>Networking</strong> <ul> <li><a href="wifi.html">Wi-Fi</a></li> <li><a href="gps.html">GPS</a></li> <li><a href="bluetooth.html">Bluetooth</a></li> </ul> </li> <li> <strong>Telephony</strong> <ul> <li><a href="telephony.html">Radio Interface Layer</a></li> </ul> </li> <li> <strong>Testing</strong> <ul> <li><a href="instrumentation_testing.html">Instrumentation Testing</a></li> </ul> </li> </ul> </li> </ul></div><a name="gc-pagecontent"></a><div class="g-unit" id="gc-pagecontent"><div id="jd-content"><div class="jd-descr"><a name="androidTitleInstrumentationFramework"></a><h1>Instrumentation Testing</h1><a name="toc"/><div style="padding:10px"><a href="#androidInstrumentationFrameworkIntro">Introduction</a><br/><a href="#androidInstrumentationTestingFramework">Instrumentation Framework</a><br/><div style="padding-left:40px"><a href="#androidInstrumentationTestingClasses">Classes</a><br/><a href="#androidInstrumentationFrameworkamCommand">Understanding the am Command</a><br/></div><a href="#androidInstrumentationFrameworkPlatform">Platform Test Suites</a><br/><div style="padding-left:40px"><a href="#androidTestingPlatformFramework">Framework Tests</a><br/><a href="#androidTestingPlatformCoreLibrary">Core Library</a><br/></div><a href="#androidInstrumentationFrameworkWritingRunning">Running Tests</a><br/><div style="padding-left:40px"><a href="#androidInstrumentationTestingRunningAll">All Tests with Default TestRunner behavior</a><br/><a href="#androidTestingTestSinglePakcage">Running all Tests Under Single Package</a><br/><a href="#androidTestingSingleTestSuite">Running a Single Test Suite</a><br/><a href="#androidInstrumentationTestingRunningSingleTestCase">A Single Test Case</a><br/><a href="#androidInstrumentationTestingRunningSingleTest">A Single Test</a><br/><a href="#androidTestingDebugging">Attaching a debugger to your test</a><br/></div><a href="#androidInstrumentationTestingCreating">Writing Tests</a><br/><div style="padding-left:40px"><a href="#androidTestingLocationFiles">Location of Files</a><br/><a href="#androidTestingContentMakefile">Contents of makefile</a><br/><a href="#androidTestingContentManifest">Content of Manifest</a><br/><a href="#androidInstrumentationTestingCreatingTestRunner">New Instrumentation TestRunner</a><br/><a href="#androidInstrumentationTestingCreatingTestCase">New InstrumentationTestCase</a><br/><a href="#androidInstrumentationFrameworkTestCase">Exploring a Test Case</a><br/><a href="#androidTestingKindsofTests">Deciding Kinds of Tests to Write</a><br/></div><a href="#androidInstrumentationFrameworkTroubleshooting">Troubleshooting</a><br/></div></font></div><a name="androidInstrumentationFrameworkIntro"></a><h2>Introduction</h2><p>This document describes how to use the Instrumentation Framework to write test cases. Instrumentation testing allows you to verify a particular feature or behavior with an automated JUnit TestCase. You can launch activities and providers within an application, send key events, and make assertions about various UI elements. </p><p>You should have a working knowledge of the following:</p><ul> <li> Android Application Framework</li> <li> Using <code>adb</code>, <code>am</code> and various logging functionality </li> <li> A brief understanding of the application of interest, that is, the names of the classes which handle the intents etc. </li> <li> JUnit testing.</li></ul><p> Each Android application runs in its own process. Instrumentation kills the application process and restarts the process with Instrumentation. Instrumentation gives a handle to the application context used to poke around the application to validate test assertions, allowing you to write test cases to test applications at a much lower level than UI screen shot tests. Note that Instrumentation cannot catch UI bugs. </p><a name="androidInstrumentationTestingFramework"></a><h2>Instrumentation Framework</h2><a name="androidInstrumentationTestingClasses"></a><h3>Classes</h3><p> The following classes help glue together <code>Instrumentation</code> with JUnit testing. </p><table> <tr> <th scope="col">Class</th> <th scope="col">Description</th></tr> <tr> <td valign="top"><code>InstrumentationTestCase</code></td> <td valign="top"> <p>This extends the standard JUnit <code>TestCase</code> and offers access to an <code>Instrumentation</code> class. Write tests inside your instrumentation class any way you see fit. For example, your test might launch activities and send key events. For this to work properly, the instrumentation needs to be injected into the test case.</p> </td> </tr> <tr> <td valign="top"><code>InstrumentationTestRunner</code></td>
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -