0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

目次

・本日の成果・考え
・最後に

本日の成果

共通関数のテストからやっていきました。

CommonFunctionTest.java
package test;

import static java.lang.System.*;

import org.junit.Test;

import util.CommonFunction;

public class CommonFunctionTest {

	//テストパターン 正常系 引数一つ
	@Test
	public void test1_1() {
		String className = new Object() {
		}.getClass().getName();
		String resultOutput = className + "のテストパターン1_1";

		try {
			out.println("**********************************************");
			out.println(resultOutput + "が開始されました。");
			CommonFunction.checkNullBlank("テスト");
			out.println(resultOutput + "が正常終了しました。");

		} catch (Exception e) {
			// TODO: handle exception
			String resultError = String.format("エラーが発生しました。内容は{%s}", e);
			out.println(resultError);

		} finally {
			out.println(resultOutput + "が終了しました。");
			out.println("**********************************************");
		}
	}
	//テストパターン 正常系 引数複数 *10
		@Test
		public void test1_2() {
			String className = new Object() {
			}.getClass().getName();
			String resultOutput = className + "のテストパターン1_2";

			try {
				out.println("**********************************************");
				out.println(resultOutput + "が開始されました。");
				CommonFunction.checkNullBlank("テスト","テスト","テスト","テスト","テスト","テスト","テスト","テスト","テスト","テスト");
				out.println(resultOutput + "が正常終了しました。");

			} catch (Exception e) {
				// TODO: handle exception
				String resultError = String.format("エラーが発生しました。内容は{%s}", e);
				out.println(resultError);

			} finally {
				out.println(resultOutput + "が終了しました。");
				out.println("**********************************************");
			}
		}
	//テストパターン Nullを最初に含む。
	@Test
	public void test2() {
		String className = new Object() {
		}.getClass().getName();
		String resultOutput = className + "のテストパターン2";

		try {
			out.println("**********************************************");
			out.println(resultOutput + "が開始されました。");
			CommonFunction.checkNullBlank(null,"テスト","テスト","テスト");
			out.println(resultOutput + "が正常終了しました。");

		} catch (Exception e) {
			// TODO: handle exception
			String resultError = String.format("エラーが発生しました。内容は{%s}", e);
			out.println(resultError);

		} finally {
			out.println(resultOutput + "が終了しました。");
			out.println("**********************************************");
		}
	}
	//テストパターン 空白(半角)を最初に含む。
		@Test
		public void test3_1() {
			String className = new Object() {
			}.getClass().getName();
			String resultOutput = className + "のテストパターン3_1";

			try {
				out.println("**********************************************");
				out.println(resultOutput + "が開始されました。");
				CommonFunction.checkNullBlank(" ","テスト","テスト","テスト");
				out.println(resultOutput + "が正常終了しました。");

			} catch (Exception e) {
				// TODO: handle exception
				String resultError = String.format("エラーが発生しました。内容は{%s}", e);
				out.println(resultError);

			} finally {
				out.println(resultOutput + "が終了しました。");
				out.println("**********************************************");
			}
		}
	
		//テストパターン 空白(全角)を最初に含む。
				@Test
				public void test3_2() {
					String className = new Object() {
					}.getClass().getName();
					String resultOutput = className + "のテストパターン3_2";

					try {
						out.println("**********************************************");
						out.println(resultOutput + "が開始されました。");
						CommonFunction.checkNullBlank(" ","テスト","テスト","テスト");
						out.println(resultOutput + "が正常終了しました。");

					} catch (Exception e) {
						// TODO: handle exception
						String resultError = String.format("エラーが発生しました。内容は{%s}", e);
						out.println(resultError);

					} finally {
						out.println(resultOutput + "が終了しました。");
						out.println("**********************************************");
					}
				}
				
				//テストパターン Nullまたは空白を途中に含む。
				@Test
				public void test4() {
					String className = new Object() {
					}.getClass().getName();
					String resultOutput = className + "のテストパターン4";

					try {
						out.println("**********************************************");
						out.println(resultOutput + "が開始されました。");
						CommonFunction.checkNullBlank("テスト",null,"テスト","テスト");
						out.println(resultOutput + "が正常終了しました。");

					} catch (Exception e) {
						// TODO: handle exception
						String resultError = String.format("エラーが発生しました。内容は{%s}", e);
						out.println(resultError);

					} finally {
						out.println(resultOutput + "が終了しました。");
						out.println("**********************************************");
					}
				}

}

コメントにテストパターンを記述しています。
第2引数以降のパターンで、null、空白の半角、全角の全てを試す必要はないと思い、一つだけテストしました。
また、引数に制限を設けていないので0(null)、1、1以上でテストしました。 

では、テスト実行

テスト結果

スクリーンショット 2025-06-17 19.13.58.png

少し、画像が小さくて申し訳ありませんが、Nullの場合エラーの文が用意しているものと違うみたいです。

原因は、チェック関数の以下の部分でした。

CommonFunction.java
for(int i = 0;i<checkNum; i++) {
			if(checkStrings[i]==null) {
				errorMessage.append("項目のうち").append(i).append("番目がnullです\n");
            //ここのIFがTrueでも、次のIFを実行してしまっていました。
				
			}
			if(checkStrings[i].isBlank()) {
				errorMessage.append("項目のうち").append(i).append("番目が空白です\n");
				
			}

以下のように修正しました。

CommonFunction.java
for(int i = 0;i<checkNum; i++) {
			if(checkStrings[i]==null) {
				errorMessage.append("項目のうち").append(i).append("番目がnullです\n");
                continue;
                //ここでストップして、次の引数をチェックしに行く。
				
			}
			if(checkStrings[i].isBlank()) {
				errorMessage.append("項目のうち").append(i).append("番目が空白です\n");
                continue;
				
			}

では、再度テスト実行。

スクリーンショット 2025-06-17 19.03.44.png

テストも全てのパターンが正常終了または用意しているエラーとなり、
想定通りの結果でした。

では、ようやくFactoryクラスのUTを実行します。

実行結果

スクリーンショット 2025-06-17 20.07.18.png

どうしてか失敗しているなと思ったら、異常系のテストのエラーキャッチの処理の中にfail処理が入っていました。

したの箇所です。

catch (Exception e) {
			String resultError = String.format("エラーが発生しました。内容は{%s}", e);
			out.println(resultError);
			e.printStackTrace();
			fail("テストパターン1失敗。");

では、修正してもう一度

スクリーンショット 2025-06-17 20.13.12.png

想定通りの結果となり、AppSettingDtoFatoryのクラスの単体テストが完了しました。

最後に

ようやく一つ目のPGおよび単体テストが完了しました。
次は、設定ファイルである.propertiesを読み込んでAppSettingDtoFactoryのメソッドを呼び出すLoaderクラスのPG・UTに取り掛かりたいと思います。
今日の振り返りとしては、ログではりませんが、エラーの内容を出力するようにソースを組んでいるので、今のところエラーをすぐに対処できています。
ここまでお付き合いありがとうございました。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?