[解決済み] JUnit を使ってサーブレットをテストする方法
2022-09-06 09:33:02
質問
Javaサーブレットを使ったWebシステムを作成し、JUnitテストを行いたいと考えています。私の
dataManager
は、データベースに送信する基本的なコードに過ぎません。JUnitでServletをテストするにはどうしたらいいでしょうか?
私のコード例では、ユーザーが登録/サインアップすることができ、それはAJAXを介して私のメインページから送信されます。
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException{
// Get parameters
String userName = request.getParameter("username");
String password = request.getParameter("password");
String name = request.getParameter("name");
try {
// Load the database driver
Class.forName("com.mysql.jdbc.Driver");
//pass reg details to datamanager
dataManager = new DataManager();
//store result as string
String result = dataManager.register(userName, password, name);
//set response to html + no cache
response.setContentType("text/html");
response.setHeader("Cache-Control", "no-cache");
//send response with register result
response.getWriter().write(result);
} catch(Exception e){
System.out.println("Exception is :" + e);
}
}
どのように解決するのですか?
あなたは、これを行うことができます モッキート を使って、モックに正しいパラメータを返させ、実際に呼び出されたことを確認し(オプションで回数を指定できます)、「結果」を書き、それが正しいかどうかを確認することができます。
import static org.junit.Assert.*;
import static org.mockito.Mockito.*;
import java.io.*;
import javax.servlet.http.*;
import org.apache.commons.io.FileUtils;
import org.junit.Test;
public class TestMyServlet extends Mockito{
@Test
public void testServlet() throws Exception {
HttpServletRequest request = mock(HttpServletRequest.class);
HttpServletResponse response = mock(HttpServletResponse.class);
when(request.getParameter("username")).thenReturn("me");
when(request.getParameter("password")).thenReturn("secret");
StringWriter stringWriter = new StringWriter();
PrintWriter writer = new PrintWriter(stringWriter);
when(response.getWriter()).thenReturn(writer);
new MyServlet().doPost(request, response);
verify(request, atLeast(1)).getParameter("username"); // only if you want to verify username was called...
writer.flush(); // it may not have been flushed yet...
assertTrue(stringWriter.toString().contains("My expected string"));
}
}
関連
-
[解決済み] プライベートメソッド、フィールド、インナークラスを持つクラスをテストするにはどうすればよいですか?
-
[解決済み] JUnit 4のテストで、ある例外が投げられたことをどのように断言しますか?
-
[解決済み] JSP/Servletを使用してサーバーにファイルをアップロードするにはどうすればよいですか?
-
[解決済み] Gradleを使用して1つのユニットテストクラスのみを実行する方法
-
[解決済み] プライベートメソッドをテストすべきか、パブリックメソッドのみをテストすべきか?[クローズド]
-
[解決済み】JSF、Servlet、JSPの違いは何ですか?
-
[解決済み】ユニットテストを実行せずにMavenプロジェクトをビルドする
-
[解決済み】Arduinoのコードをユニットテストするにはどうしたらいいですか?
-
[解決済み] モックオブジェクトは何のためにあるのか?
-
[解決済み] TDDとBDDの主な違いは何ですか?[クローズド]
最新
-
nginxです。[emerg] 0.0.0.0:80 への bind() に失敗しました (98: アドレスは既に使用中です)
-
htmlページでギリシャ文字を使うには
-
ピュアhtml+cssでの要素読み込み効果
-
純粋なhtml + cssで五輪を実現するサンプルコード
-
ナビゲーションバー・ドロップダウンメニューのHTML+CSSサンプルコード
-
タイピング効果を実現するピュアhtml+css
-
htmlの選択ボックスのプレースホルダー作成に関する質問
-
html css3 伸縮しない 画像表示効果
-
トップナビゲーションバーメニュー作成用HTML+CSS
-
html+css 実装 サイバーパンク風ボタン
おすすめ
-
[解決済み] フェイク、モッキング、スタビングの違いとは?
-
[解決済み] ユニットテストの命名のベストプラクティス [終了しました]。
-
[解決済み] ユニットテストは努力に値するか?[クローズド]
-
[解決済み】mochaのテスト用ディレクトリを指定するには?
-
[解決済み】ユニットテスト初心者、優れたテストを書くには?[クローズド]
-
[解決済み] Visual Studio 2015または2017でユニットテストが検出されない
-
[解決済み] ユニットテストはゲッターとセッターのために書くべきですか?
-
[解決済み] ファイルシステムに依存するコードの単体テスト
-
[解決済み] GTestとCMakeを使った作業の始め方
-
[解決済み] ScalaTestとScala Specsのユニットテストフレームワークの違いは何ですか?