LoginSignup
0
0

More than 1 year has passed since last update.

【 Java 】JUnitを使ったFizzBuzzゲームのテスト

Last updated at Posted at 2023-02-23

■情報

・Eclipse: Version 2022-12 (4.26.0)
・Java : Version 17
・JUnit4

■FizzBuzzクラスのソース

FizzBuzz.java
public class FizzBuzz {
	private int inputNum;
	public FizzBuzz(int num) {
		this.inputNum = num;
	}
	
	public String FizzBuzzGame() {
		if (inputNum % 15 == 0) {
			return "FizzBuzz";
		} else if (inputNum % 5 == 0) {
			return "Buzz";
		} else if (inputNum % 3 == 0) {
			return "Fizz";
		} else {
			return Integer.toString(inputNum);
		}
	}
}

■テストクラスのソース

FizzBuzzTest.java
import static org.hamcrest.CoreMatchers.*;
import static org.junit.Assert.*;
import org.junit.Test;

public class FizzBuzzTest {

	@Test
    // 3の倍数の期待値「Fizz」が返ってくるかテスト
	public void case1() {
	    FizzBuzz fizzBuzz  = new FizzBuzz(3);
	    assertThat(fizzBuzz.FizzBuzzGame(), is("Fizz"));
	}
	
	@Test
    // 5の倍数の期待値「Buzz」が返ってくるかテスト
	public void case2() {
	    FizzBuzz fizzBuzz  = new FizzBuzz(5);
	    assertThat(fizzBuzz.FizzBuzzGame(), is("Buzz"));
	}
	
	@Test
    // 3と5の倍数の期待値「FizzBuzz」が返ってくるかテスト
	public void case3() {
	    FizzBuzz fizzBuzz  = new FizzBuzz(15);
	    assertThat(fizzBuzz.FizzBuzzGame(), is("FizzBuzz"));
	}
	
	@Test
    // 上記以外の期待値「数値」が返ってくるかテスト
	public void case4() {
	    FizzBuzz fizzBuzz  = new FizzBuzz(16);
	    assertThat(fizzBuzz.FizzBuzzGame(), is("16"));
	}

}

■動作検証

1:FizzBuzzTestクラスのファイルを右クリック
スクリーンショット 2023-02-20 0.33.59.png


2:実行の上にカーソルを移動
スクリーンショット 2023-02-20 0.34.25.png


3:JUnitテストを押下
スクリーンショット 2023-02-20 0.34.37.png


4:コンソールにテスト結果が表示される
※今回4ケーステストコードを作成したので、実行が「4/4」と表示されています。
また全て期待値通りの結果が返ってきているためエラーが「0」となっています。
右側の緑色のバーは「正常」を意味し、赤色の場合「異常」を意味します。
スクリーンショット 2023-02-20 0.35.02.png

■最後に

今回はJUnitを使ってFizzBuzzゲームのソースをテストしてみました。
今回テスト結果の判定に使ったメソッド等は、@opengl-8080さんの「HamcrestのMatchersに定義されているメソッドの使い方メモ」という記事を参考に使ってみました。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0