`

JUnit测试小小demo

阅读更多

运行效果图:
[img]

[/img]





项目结构图:
[img]

[/img]



activity_main.xml
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="fill_parent"
    android:orientation="vertical"
    android:layout_height="fill_parent">

    <TextView
        android:id="@+id/ResultView"
        android:text="測試結果"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    
    <TextView
        android:id="@+id/BarView"
        android:text="barView"
        android:layout_marginTop="50dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <TextView
        android:id="@+id/MessageView"
        android:text="message"
        android:layout_marginTop="50dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>
    <Button
        android:id="@+id/LunchButton"
        android:text="button"
        android:layout_marginTop="50dip"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"/>

</LinearLayout>


TestMath
要测试的两个地方
package com.example.junitandroidtest;

import android.test.AndroidTestCase;

public class TestMath extends AndroidTestCase{
	
	 private int i1;    
	    private int i2;    
	    static final String LOG_TAG = "MathTest";    
	        
	    @Override    
	    protected void setUp() throws Exception {    
	        i1 = 2;    
	        i2 = 3;    
	    }    
	        
	    public void testAdd() {    
	        assertTrue("testAdd failed", ((i1 + i2) == 6));    
	    }    
	        
	    public void testDec() {    
	        assertTrue("testDec failed", ((i2 - i1) == 0));    
	    }    
	    
	    @Override    
	    protected void tearDown() throws Exception {    
	        super.tearDown();    
	    }    
	    
	    @Override    
	    public void testAndroidTestCaseSetupProperly() {    
	        super.testAndroidTestCaseSetupProperly();    
	        //Log.d( LOG_TAG, "testAndroidTestCaseSetupProperly" );    
	    }    
}




ExampleSuite
package com.example.junitandroidtest;

import junit.framework.TestSuite;

public class ExampleSuite extends TestSuite {    
    
    public ExampleSuite() {    
        addTestSuite(TestMath.class);    
    }    
    
}    




MainActivity.java
package com.example.junitandroidtest;

import junit.framework.AssertionFailedError;
import junit.framework.Test;
import junit.framework.TestListener;
import android.os.Bundle;
import android.os.Handler;
import android.os.Message;
import android.app.Activity;
import android.graphics.Color;
import android.test.AndroidTestRunner;
import android.view.Menu;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.widget.Toast;

public class MainActivity extends Activity {

	private TextView resultView;

	private TextView barView;

	private TextView messageView;

	private Thread testRunnerThread;

	private static final int SHOW_RESULT = 0;

	private static final int ERROR_FIND = 1;

	@Override
	protected void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.activity_main);
		resultView = (TextView) findViewById(R.id.ResultView);
		barView = (TextView) findViewById(R.id.BarView);
		messageView = (TextView) findViewById(R.id.MessageView);
		Button lunch = (Button) findViewById(R.id.LunchButton);
		lunch.setOnClickListener(new View.OnClickListener() {
			@Override
			public void onClick(View v) {
				startTest();
			}
		});
	}

	private void showMessage(String message) {
		hander.sendMessage(hander.obtainMessage(ERROR_FIND, message));
	}

	private void showResult(String text) {
		hander.sendMessage(hander.obtainMessage(SHOW_RESULT, text));
	}

	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();
		}
	}

	public Handler hander = new Handler() {
		public void handleMessage(Message msg) {
			switch (msg.what) {
			case SHOW_RESULT:
				resultView.setText(msg.obj.toString());
				break;
			case ERROR_FIND:
				messageView.append(msg.obj.toString());
				barView.setBackgroundColor(Color.RED);
				break;
			default:
				break;
			}
		}
	};

	class TestRunner implements Runnable, TestListener {

		private Activity parentActivity;

		private int testCount;

		private int errorCount;

		private int failureCount;

		public TestRunner(Activity parentActivity) {
			this.parentActivity = parentActivity;
		}

		@Override
		public void run() {
			testCount = -1;
			errorCount = 0;
			failureCount = 0;

			ExampleSuite suite = new ExampleSuite();
			AndroidTestRunner testRunner = new AndroidTestRunner();
			testRunner.setTest(suite);
			testRunner.addTestListener(this);
			testRunner.setContext(parentActivity);
			testRunner.runTest();
		}

		@Override
		public void addError(Test test, Throwable t) {
			errorCount++;
			showMessage(t.getMessage() + "\n");
		}

		@Override
		public void addFailure(Test test, AssertionFailedError t) {
			failureCount++;
			showMessage(t.getMessage() + "\n");
		}

		@Override
		public void endTest(Test test) {
			showResult(getResult());
		}

		@Override
		public void startTest(Test test) {
			testCount++;
		}

		private String getResult() {
			int successCount = testCount - failureCount - errorCount;
			return "Test:" + testCount + " Success:" + successCount
					+ " Failed:" + failureCount + " Error:" + errorCount;
		}

	}

}






AndroidManifest.xml
注意里面第26行的添加
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.junitandroidtest"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="8" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name="com.example.junitandroidtest.MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        
         <uses-library android:name="android.test.runner" /> 
        
    </application>

</manifest>








  • 大小: 14 KB
  • 大小: 63 KB
分享到:
评论

相关推荐

    junit测试小demo

    在这个名为"junit测试小demo"的压缩包文件中,我们可以预期它包含了一些关于如何使用Junit进行单元测试的示例代码或教程。 首先,让我们来理解一下Junit的基本概念。Junit是一个开源项目,由Eclipse基金会维护,...

    springboot整合junit测试用例demo

    JUnit是一个广泛使用的Java单元测试框架,它简化了测试过程,使得测试更加便捷高效。 首先,我们需要在Spring Boot项目中引入JUnit的依赖。在`pom.xml`文件中添加以下Maven依赖: ```xml &lt;groupId&gt;org.spring...

    android studio junit测试 demo

    在这个“android studio junit测试 demo”中,我们将探讨如何在Android Studio中设置和执行JUnit测试,特别是针对Activity的测试。 首先,理解JUnit测试的基本概念是关键。JUnit是一个基于Java的测试框架,允许...

    junit测试demo

    在这个“junit测试demo”中,包含了两种类型的测试:纯Java和基于SSH(Spring、Struts和Hibernate)的应用程序的测试。下面将详细介绍这两个方面的内容。 首先,纯Java的JUnit测试主要涉及以下几个知识点: 1. **...

    Junit测试案例使用

    3. Junit 的优点:由于 Junit 相对独立于所编写的代码,可以测试代码的编写可以先于实现代码的编写,XP 中推崇的 test first design 的实现有了现成的手段:用 Junit 写测试代码,写实现代码,运行测试,测试失败,...

    JUnit3.8.1 以及使用JUnit测试的代码demo

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可重复运行的测试用例,以确保代码的正确性和稳定性。JUnit3.8.1是该框架的一个较早版本,尽管现在已经有更新的版本(如JUnit5),但了解其基本...

    实验5 JUnit测试框架的使用.doc

    JUnit 测试框架的使用 JUnit 是一个流行的单元测试框架,广泛应用于 Java 项目中,本文将详细介绍 JUnit 测试框架的使用,并提供了两个示例来帮助读者更好地理解和掌握 JUnit 的使用。 一、JUnit 测试框架的使用 ...

    自动饮料机Junit测试(软件测试与质量保证实验).rar

    本实验“自动饮料机Junit测试”旨在帮助学生深入理解和应用单元测试,特别是在Java编程环境下。单元测试是一种针对程序代码最小可测试单元进行验证的方法,通常这个单元是函数或方法。Junit是Java领域广泛使用的单元...

    Junit 异常测试demo

    在Java单元测试中,JUnit是一个广泛使用的框架,它允许开发者编写和执行针对代码各个部分的自动测试。在本文中,我们将深入探讨如何使用JUnit进行异常测试,特别关注一个名为`Calculator`类的简单示例。 首先,我们...

    junit测试_java_JUnit_JUnit测试_

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可执行的测试用例来验证代码的功能。单元测试是对程序中的最小可测试部分——通常是一个函数或方法——进行检查,确保其按照预期工作。JUnit作为...

    Junit 单元测试完整案例

    【Junit单元测试完整案例】深入解析 在软件开发中,单元测试是验证代码功能是否正确、独立单元是否按预期工作的关键步骤。Junit作为Java领域最常用的单元测试框架,为开发者提供了简单易用的API来进行测试。本案例...

    javaweb中.java文件测试需要的框架(junit测试).rar

    本压缩包文件"javaweb中.java文件测试需要的框架(junit测试).rar"显然是为了帮助开发者理解如何在Java Web项目中使用JUnit进行测试。 **JUnit框架详解** JUnit是一个基于注解的测试框架,它的核心功能包括: 1....

    Junit测试jar包

    JUnit是Java编程语言中最常用的单元测试框架之一,它为开发者提供了编写和运行可重复测试的便利工具。在软件开发过程中,单元测试是非常重要的一环,因为它确保了代码的各个独立部分(即单元)按预期工作,有助于...

    Junit测试学习文档

    《Junit测试学习文档》 在软件开发过程中,单元测试是一项至关重要的工作,它能确保代码的正确性,提高代码质量,并为后续的维护和重构提供保障。Junit作为Java编程语言中最流行的单元测试框架,是每个Java开发者...

    Junit测试demo

    本篇将深入探讨"Junit测试demo",旨在帮助您理解如何利用JUnit进行有效的单元测试。 一、JUnit简介 JUnit是XUnit家族的一员,由Ernst von Brühl和Kent Beck在2000年创建。它提供了断言机制、测试注解、测试套件和...

    junit测试private函数

    JUnit作为Java领域最流行的单元测试框架,通常用于测试公共方法。然而,有时我们可能需要测试私有(private)方法,因为它们可能包含关键逻辑,尽管直接调用它们并不符合面向对象设计的原则。本篇文章将详细介绍如何...

    JUnit测试jar包.zip

    JUnit是Java编程语言中最常用的单元测试框架之一,它允许开发者编写可重复运行的测试用例,以确保代码的功能正确性。这个"JUnit测试jar包.zip"文件很可能包含了JUnit库的jar文件,使得开发者能够在自己的项目中引入...

Global site tag (gtag.js) - Google Analytics