前面我们学习了android.test包中的大部分类,是该通过学习具体的例子将前面的知识融会贯通,让我们的理解更加深刻,例子程序代码在本文末有下载,下载后添加Eclipes的工程中,边看这篇文章边阅读例子程序的代码。
首先分析整个工程的结构图,如下:
![Android JUnit深入浅出(五)——AndroidTest例子分析_27909](https://i-blog.csdnimg.cn/blog_migrate/41ebc71e0f5be238df28b28377290817.png)
AndroidTestCase,Testsuite在 前面的篇幅中已经学习过了,ContestTest、MathTest、SomeTest、ExampleSuite在前面的例子中已经为大家介绍了,这里我们主要说明整个程序是如何运行的?
核心类代码简要列举,如下:
- public class JUnit extends Activity {
- static final String LOG_TAG = “junit”;
- Thread testRunnerThread = null;
- /** Called when the activity is first created. */
- @Override
- public void onCreate(Bundle savedInstanceState)
- {
- super.onCreate(savedInstanceState);
- setContentView(R.layout.main);
- Button launcherButton = (Button)findViewById( R.id.launch_button );
- launcherButton.setOnClickListener( new View.OnClickListener() {
- public void onClick( View view ) {startTest();}
- } );
- }
- private synchronized void startTest()
- {
- if( ( testRunnerThread != null ) &&!testRunnerThread.isAlive() )
- testRunnerThread = null;
- if( testRunnerThread == null )
- {
- testRunnerThread = new Thread( new TestRunner( this ) );
- testRunnerThread.start();
- }
- else
- {
- Toast.makeText(this, “Test is still running”, Toast.LENGTH_SHORT).show();
- }
- class TestRunner implements Runnable,TestListener
- {
- static final String LOG_TAG = “TestRunner”;
- int testCounter;
- int errorCounter;
- int failureCounter;
- ……;
- Activity parentActivity;
- public TestRunner( Activity parentActivity )
- {this.parentActivity = parentActivity;}
- public void run()
- {
- testCounter = 0;
- errorCounter = 0;
- failureCounter = 0;
- ………….;
- Log.d( LOG_TAG, “Test started” );
- /*整个代码的核心*/
- AndroidTestRunner testRunner = new AndroidTestRunner();
- testRunner.setTest( new ExampleSuite() );
- testRunner.addTestListener( this );
- testRunner.setContext( parentActivity );
- testRunner.runTest();
- Log.d( LOG_TAG, “Test ended” );
- }
- // TestListener
- public void addError(Test test, Throwable t)
- {
- Log.d( LOG_TAG, “addError: “+test.getClass().getName() );
- Log.d( LOG_TAG, t.getMessage(), t );
- ++errorCounter;
- …….;
- }
- public void addFailure(Test test, AssertionFailedError t)
- {
- Log.d( LOG_TAG, “addFailure: “+test.getClass().getName() );
- Log.d( LOG_TAG, t.getMessage(), t );
- ++failureCounter;
- …….;
- }
- public void endTest(Test test)
- {
- Log.d( LOG_TAG, “endTest: “+test.getClass().getName() );
- …..;
- }
- public void startTest(Test test)
- {
- Log.d( LOG_TAG, “startTest: “+test.getClass().getName() );
- ++testCounter;
- …….;
- }
- }