2021年3月23日火曜日

EclipseでJUnitを使用したユニットテストを実施

 Eclipse All in One にはユニットテストが実行できるJUnitが最初から組み込まれています。今回は、これを使ってユニットテストを実施する手順を纏めました。

Eclipseのセットアップおよびテスト対象のクラスについてはこの回で作成済みのものを使用します。

ただし、サーブレットクラスをテストするには、JUnit単独ではできないため、今回はユニットテスト用に、一部ソースを書き換えます。(改変後のgetTextメソッドをテストします)

package sample01;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

@WebServlet("/S01")
public class Servlet01 extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException {

		response.setContentType("text/html");
		PrintWriter out = response.getWriter();
		out.println(getText());

	}

	protected String getText() {
		StringBuffer sb = new StringBuffer();
		sb.append("<html><head></head><body>");
		sb.append("<p>Simple Application</p>");
		sb.append("<p>Servlet01</p>");
		sb.append("</body></html>");
		return  sb.toString();
	}
}


それでは、始めて行きましょう。

リリース時にテストクラスを除外しやすくなるなどのメリットがありますのでテストクラス専用のソースフォルダを作成します。

プロジェクト上で右クリック「新規」-「その他」をクリックします

「Java」-「ソースフォルダ」を選択して次へをクリックします

テスト専用フォルダのフォルダ名(今回はtestsrcとしました)を指定して完了をクリックします

「testsrc」が作成されています(パッケージエクスプローラーで確認できます)

ここからテストクラスを作成していきます
テスト対象のクラス上で右クリックし「新規」-「その他」をクリックします
「Junitテストケース」を選択して次へをクリックします

ソース・フォルダを先ほど作成したテストクラス専用のtestsrcとし、名前はテスト対象クラスにTestの文字を付加したもの、テスト元クラスは最初に選択したクラスが設定されている状態で次へをクリックします

テスト対象のメソッドはgetTextなので、これをチェックで選択し完了をクリックします

対象のプロジェクトのビルドパスにJUnitが無い場合、このダイアログが表示されるので、OKボタンをクリックしビルドパスに追加します

テスト対象のクラスに対になるようにテストクラスが作成されました。
続けて、テストクラスを実装します作成されたテストクラスを次の様に変更してください。
メソッドassertEquals([x],[y])は、xとyが同じ場合OKとなる
※テストNGの様子が分かるように、わざとchk変数の先頭に「!」を入れています

package sample01;

import static org.junit.jupiter.api.Assertions.*;

import org.junit.jupiter.api.Test;

class Servlet01Test {

	@Test
	void testGetText() {
		final String chk =
		"!<html><head></head><body><p>Simple Application</p><p>Servlet01</p></body></html>");


		Servlet01 obj = new Servlet01();
		assertEquals(chk,obj.getText());
	}

}
ここからユニットテストを実行します
テストクラス上で右クリックし、「実行」-「JUnitテスト」をクリックします

ユニットテストが実行されて、エラーが1件発生している状態です

JUnitビューの「org.opentest4j...」部分をダブルクリックすると比較ダイアログが表示され先頭1文字が想定と異なることが確認できます

テストクラスの変数chkの先頭「!」を削除して再実行すると、エラーなく終了することが出来ました。


0 件のコメント:

コメントを投稿

適格請求書等保存方式(インボイス制度)と消費税の端数処理

消費税の税額計算は 売上税額-仕入れ税額=納税額 2023年10月以降、この納税額の計算の元になる請求書は適格請求書(インボイス)の保存が必要となる。 2019年10月から消費税が10%に引き上げられる際に、日用品等は8%に据え置かれ複数税率を扱う事業者が発生する。 この軽減税率...