Cou氏の徒然日記(2022)

ほのぼの日記ブログです。

JUnitでテストコードを作成・実行

最近、Javaでの開発が増えて、たまにコーディングすることがあり、JUnitを使ってテストケースを作ることも多いです。

なので、覚え書きも含めて、JUnit の使い方など。

そんなに難しくもないので、そうそう忘れることはないですが。

 

基本的に、Eclipseを使えば、JUnitプラグインも入っているので設定自体は何もいらないです。

 

適当にJavaプロジェクトを作成。

この時、使用するJREのバージョンを選択します。

今回は、適当に JavaSE-1.8 を選択。

f:id:coublood:20220115130340p:plain

 

テスト用に適当にクラスを作ってメソッドを実装。

f:id:coublood:20220115132132p:plain

f:id:coublood:20220115132215p:plain

今回は、2倍、3倍、4倍を返す適当なメソッドで(笑)

 

このクラスのメソッドをJUnitでテストコードを作成するには、目的のソースで右クリックして、[新規]->[その他] から [JUnit]->[JUnitテストケース] を選択。

f:id:coublood:20220115132250p:plain

 

テスト実装用のクラスを作成。

f:id:coublood:20220115132311p:plain


この時、対象のメソッドを選択すると、自動的に対応したメソッドを作ってくれます。

f:id:coublood:20220115132330p:plain

f:id:coublood:20220115132349p:plain

 

あとはメソッドを検証するようなコードを実装。

今回の場合は、戻り値を検証するコードを作成。

f:id:coublood:20220115132606p:plain

class CalculateMultipleTest {
	@Test
	void testCalcDouble() {
		int expectedValue = 12;
		int returnedValue = CalculateMultiple.calcDouble(6);
		assertEquals(expectedValue, returnedValue);
	}
	@Test
	void testCalcTriple() {
		int expectedValue = 12; //Errorとするため,わざと間違った値を設定//
		int returnedValue = CalculateMultiple.calcTriple(6);
		assertEquals(expectedValue, returnedValue);
	}
	@Test
	void testCalcMultiplyBy4() {
		int expectedValue = 12; //Errorとするため,わざと間違った値を設定//
		int returnedValue = CalculateMultiple.calcMultiplyBy4(6);
		assertEquals(expectedValue, returnedValue);
	}
}

 

あとはこのテストコードを実行するだけ。

f:id:coublood:20220115132637p:plain

f:id:coublood:20220115132803p:plain

テストケース3件が実行され、そのうち2件がエラーとなっています。
(1件は正常、2件はわざとエラーになるようにしたので想定通り)

 

今回はテストコードのほうが間違っているので、テストコードを修正して再実行。

f:id:coublood:20220115132833p:plain

f:id:coublood:20220115132854p:plain

これでテストコードができました。
今後メソッドを改造することがあったら、このテストを実行することで、デグレードしていないかが簡単に検証できますね。

 

JUnitを JavaSE-11で使用しようとした場合にimportエラー

最初にJavaSE-11を使用してやった場合、なぜかJUnitのimportのエラーが解決できない問題にぶつかりました。

 

JavaSE-11 を選択してプロジェクトを作成。

f:id:coublood:20220115133301p:plain

 

同様にクラス・メソッドを実装して、そのクラスに対するテストクラスを作成。

すると…importの部分でエラーが発生。

f:id:coublood:20220115160009p:plain

「The type org.junit.jupiter.api.Assertions is not accessible.」

というエラーがどうやっても解決できず…。

ビルドパスを確認しても、JUnitのjarファイルパスは登録されていますし、謎です。

色々なサイトを見てみましたが、どうやらJavaSE-11の問題の可能性がありそうです。

同じ手順を JavaSE-1.8 でやってもエラーにならないので。