Android JUnitテストの説明と実例のプレゼンテーション


JUnitって何?
JUnitはテスト駆動開発方式を採用し、つまり開発前にテストコードを作成し、主にテストされたコードがどのように使用されるか、エラー処理などを説明するために使用される.その後、コードの書き込みを開始し、最後にテストコードに完全に合格するまで、テストコードでこれらのコードを徐々にテストします.
JUnitの4つの機能について簡単に説明します
テスト・インスタンスを管理します.どのコードを修正したのか、どの部分に影響を与えるのか、JUnitで今回の修正を完全テストします.これはJUnitのいわゆるTestSuiteです.
テストコードを定義します.これはJUnitのいわゆるTestCaseで、ソースコードのテストの必要に応じて各TestCaseを定義し、TestCaseを対応するTestSuiteに追加して管理しやすい.
テスト環境を定義します.TestCaseテストの前に環境設定を呼び出し、テストで使用します.もちろん、テスト例で直接テスト環境を定義することもできます.
テスト結果を検出します.正常で異常なテストごとに、実行結果が何であるか、結果が予想されるかなど、明確な定義が必要であり、JUnitはこの面で強力な機能を提供しています.
以上の部分は我々が通常IDEを使ってデバッグする過程と全く同じで、ただテスト用例管理、テスト結果検出などの機能を増加しただけで、ユニットの効率を高め、ユニットテストの完全性を保証し、ユニットテストの目標を明確にした.
JUnitテストには、次の要素が含まれます.
開発コードセクション
テストコードセクション
テストツールセクション
試験対象クラスA
TestCaseを拡張したりTestSuitを構築したりする方法で試験クラスBを作成する
グラフィックインタフェースまたはテキストインタフェースを選択できるテスト・ランサーR
操作手順:
Bをコマンドライン方式またはグラフィックインタフェース選択方式でRに渡し、Rはテストを自動的に実行し、結果を表示します.
まずjunitテストクラスライブラリとandroidのユニットテストクラスライブラリを見てみましょう.
 
SDK
機能の説明
junit.framework
JUnitテストフレームワーク
junit.runner
ユーティリティクラスはJUnitテストフレームワークをサポートする
android.test
Android対JUnitテストフレームワークの拡張パッケージ
android.test.mock
Androidのいくつかの補助類
android.test.suitebuilder
ユーティリティクラス、サポートクラスのテスト実行
junit.frameworkでのメソッドの説明:
TestSuit:TestSuiteはテスト例の集合である.
TestCase:複数のテストの実行例を定義します.
TestResult:テストケースの結果を収集し、テスト結果は失敗とエラーに分けられ、予想できなかった断言が失敗であれば、エラーはArrayIndexOutOfBoundsException異常による予想できない問題のようなものである.
TestFailure:テストに失敗したときにキャプチャされた異常;
Assert:断言のメソッドセットで、断言に失敗した場合に情報を表示します.
次に例を示します.
AndroidManifest.xml
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
      package="com.android.junit"
      android:versionCode="1"
      android:versionName="1.0">
    <uses-sdk android:minSdkVersion="8" />

    <application android:icon="@drawable/icon" android:label="@string/app_name">
        <activity android:name="com.android.junittest.MyJUnitActivity"
                  android:label="@string/app_name">
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />
                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
        <!-- Android JUnit   -->
		<uses-library android:name="android.test.runner" />
    </application>
	<!--  :targetPackage   mainfest package     -->
	<instrumentation android:targetPackage="com.android.junit" 
			android:name="android.test.InstrumentationTestRunner" 
			android:label="Android JUnit  " />
</manifest>

Activityクラスは、インタフェースを与えるだけで、実際の用途はありません.
package com.android.junit;

import com.android.junit.R;

import android.app.Activity;
import android.os.Bundle;

public class MyJUnitActivity extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
    }
}

テストが必要なクラス
package com.android.junit;


public class Apps {
	public void methodA() {
		System.out.println("---Hello!");
	}
	
	public void methodB(String name) {
		System.out.println("---Hello " + name + "!");
	}
}

テストクラス
package com.android.junittest; import com.android.junit.Apps; import android.test.AndroidTestCase; public class AppsTester extends AndroidTestCase { Apps a = null; private int i1; private int i2; protected void setUp() throws Exception { a = new Apps(); i1 = 1; i2 = 2; } public void testMethodA() { a.methodA(); } public void testMethodB() { a.methodB("Android"); } //          public void testAdd() { assertTrue("testAddFailed", (i1 + i2) == 4); } public void testDec() { assertTrue("testDecFailed", (i2 - i1) == 1); } }