junit4.8.2入門応用


概要
junit紹介
JUnitはErich GammaとKent Beckによって作成された回帰テストフレームワークである.Junitテストはプログラマーテスト、いわゆるホワイトボックステストです.プログラマーはテストされたソフトウェアがどのように機能を完成し、どのような機能を完成するかを知っているからです.Junitは一連のフレームワークで、TestCaseクラスを継承すれば、Junitで自動テストを行うことができます.
junit特性
JUnitはオープンソースのJavaテストフレームワークで、繰り返し可能なテストを作成し、実行します.彼はユニットテストフレームワークシステムxUnitの一例(java言語用)である.次の機能があります.
1.所望の結果をテストするためのアサーション(Assertion)
2、共同テストデータを共有するためのテストツール
3、便利な組織とテストを実行するためのテストキット
4、図形とテキストのテスト実行器
junitの利点
またjunitはxpプログラミングと再構築(refactor)で極力推奨されているツールで、自動ユニットテストを実現する場合に開発の効率を大幅に向上させることができるため、実際にテストコードを書くのにも多くの時間と労力がかかるのですが、この東東を使うメリットはいったいどこにあるのでしょうか.筆者はこう思っています.
通俗的な解釈
1.所望の結果によるテスト
2.mainのように1つしか実行できない複数のメソッドを一緒に実行
3.直感的な運転結果
4.仕様のテストコード
2最初のjunit 4プログラム
   
1)導入パッケージjunit-4.8.2.jar
hamcrest-all-1.2.jar
   
2)コードJUnit 4 HelloWorld
直接実行クラスJAvaは結果を見ることができます.
package com.huaxin.phl;

public class Arithmetic {

	public int add(int a, int b) {
		return a + b;
	}

	public String getString() {
		return "my name is phl!!!";
	}
}
package com.huaxin.test;

import static org.junit.Assert.*;
import static org.hamcrest.Matchers.*;

import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Ignore;
import org.junit.Test;

import com.huaxin.phl.Arithmetic;

public class ArithmeticTest {
	
	@BeforeClass
	public static void beforeClass(){
		System.out.println("junit4.8.2 is begin!");
	}
	@AfterClass
	public static void afterClass(){
		System.out.println("junit4.8.2 is end!");
	}
	
	@Ignore
	public void testIgnore(){
		System.out.println("testIgnore!");
	}
	
	@Test
	public void testAdd() {
		System.out.println("testAdd!!");
		assertThat(new Arithmetic().add(4, 3), is(7));
	}

	@Test
	public void testLength() {
		System.out.println("testLength!!");
		assertThat(new Arithmetic().getString(),containsString("phl"));
	}
}

   
3)assertThat
hamcrestのマッチング方法を使用すると、より自然になります.
a)
assertThat( n, allOf( greaterThan(1), lessThan(15) ) );
assertThat( n, anyOf( greaterThan(16), lessThan(8) ) );
assertThat( n, anything() );
assertThat( str, is( "bjsxt") );
assertThat( str, not( "bjxxt") );
b)
assertThat( str, containsString( "bjsxt") );
assertThat( str, endsWith("bjsxt") );
assertThat( str, startsWith( "bjsxt") );
assertThat( n, equalTo( nExpected ) );
assertThat( str, equalToIgnoringCase( "bjsxt") );
assertThat( str, equalToIgnoringWhiteSpace( "bjsxt") );
c)
assertThat( d, closeTo( 3.0, 0.3 ) );
assertThat( d, greaterThan(3.0) );
assertThat( d, lessThan (10.0) );
assertThat( d, greaterThanOrEqualTo (5.0) );
assertThat( d, lessThanOrEqualTo (16.0) );
d)
assertThat( map, hasEntry( "bjsxt", "bjsxt") );
assertThat( iterable, hasItem ( "bjsxt") );
assertThat( map, hasKey ( "bjsxt") );
assertThat( map, hasValue ( "bjsxt") );
   
4)FailureとError
1.Failureとはテストに失敗したことです
2.Errorとは、テストプログラム自体のエラーです
   
5)JUnit4 Annotation
1.@Test:テスト方法
a)(expected=XXException.class)
b)(timeout=xxx)
2.@Ignore:無視されたテスト方法
3.@Before:各テストメソッドの前に実行
4.@After:各テストメソッドの後に実行
5.@BeforeClass:すべてのテストが開始される前に実行
6.@AfterClass:すべてのテストが終了したら実行
   
6)複数のテストの実行
   
7)注意1.約束を守る.
a)クラスをtestパッケージに入れる
b)クラス名はXXXTestで終わる
c)メソッドはtestMethodで命名する
   
8)その他フレームワークTestNG