keeps the bar green to keep the code clean"-JUNITユニットテスト


まずクラスを新規作成します.
package com.zzk.junit4;

public class T {
    public int add (int x,int y) {
    	return x + y;
    }
    
    // 
    public static void main(String[] args) {
    	int z = new T().add(3, 5);
    	System.out.println(z);
    }
    
}

次にJUNITユニットテストを書いてadd(int x,int y)をテストします
方法はJUNITで単独でテストできます.
package com.zzk.junit4.test;

import static org.junit.Assert.*;// 

import org.junit.After;
import org.junit.Test;

import com.zzk.junit4.T;

public class TTest {

	@After
	public void tearDown() throws Exception {
	}

	@Test
	public void testAdd() {
		//fail("Not yet implemented");
        int z = new T().add(5, 3);
        assertEquals(8, z);// 8, z
	}

}

だいたいそうです.
ドキュメントは次のとおりです.

ユニットテストとは


クラスを書いて、他の人に使うと、バグがありますか?どうしよう?テストしてみます.
mainメソッドでテストしてもいいですか?悪い!
1.一緒に運転できない!
2.多くの場合、人為的な観察出力が正しいかどうかを判断する必要がある

なぜユニットテストを行うのか


テストを再利用し、将来の実装の変化に対応します.
士気を高めて、私のものは大丈夫だとはっきり知っています.

JUnit4 HelloWorld


1.        new project
2.クラスの作成
3.testcaseの作成

古い断言を放棄しhamcrest断言を用いる


1.        assertThat
2.hamcrestを用いたマッチング方法
a)より自然
3.例
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") );

FailureとError


1.Failureとはテストに失敗したことです
2.Errorとは、テストプログラム自体のエラーです

JUnit4 Annotation


1.@Test:試験方法
a)        (expected=XXException.class)
b)       (timeout=xxx)
2.@Ignore:無視されたテスト方法
3.@Before:各テストメソッドの前に実行
4.@After:各テストメソッドの後に実行
5.@BeforeClass:すべてのテストが開始される前に実行
6.@AfterClass:すべてのテストが終了したら実行

複数のテストの実行


に注意


1.約束を守る.例えば:
a)クラスをtestパッケージに入れる
b)クラス名はXXXTestで終わる
c)メソッドはtestMethodで命名する

その他のフレームワーク


TestNG