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の先頭「!」を削除して再実行すると、エラーなく終了することが出来ました。