• ベストアンサー

単体テストの方法教えてください

質問内容が非常に抽象的で恐縮なのですが、、、 今回Eclipseを使いJSP/Servletでクラスをいくつか作ります。 作成後、具体的にどういった中身のテストクラスを作っていいか分からず困っています。動きをチェックするということは分かってますが実際作ろうとするとどうしてよいか分からなくなります。 イメージでもよいのでご教示お願いします。 (EclipseのJUnitを使えばいいのかなとも思いました)

  • Java
  • 回答数3
  • ありがとう数3

質問者が選んだベストアンサー

  • ベストアンサー
回答No.3

単体テストならば、 メソッド内の全てのルートを通るように試験項目を作成すればよいです。 例えば月数を渡すと2文字で返すようなメソッドを作ったとします。 (「1」を渡したならば「01」を、「10」ならば「10」を返すといった感じ) ならば ・メソッドの引数に「1」を渡したときの戻り値の確認 ・「11」を渡したときの戻り値 といった具合です。 ちなみに、単体テストツールを使うのは良いかも知れませんが、 「単体テスト」とは何をするのか? をしっかり理解しないと、 どんなにすばらしいテストツールを使っても、 バグだらけのシステムが出来上がってしまいます。

supercat1
質問者

お礼

回答ありがとうございます。 私はJAVAがすらすら書けないのでいつも苦戦してます。ソースは読めるですが、自分で書くとなると弱いです。。。 期待通り動くかどうか確認すればよいのですね。 Eclipseのデバック機能を使ってみたりしてます。 バグは発見が早いにこしたことはないですね~。

その他の回答 (2)

  • covachan
  • ベストアンサー率38% (46/120)
回答No.2

Struts等を使用しないのであればJakartaのCactusあたりはどうでしょうか? StrutsTestCaseにもHttpServletRequestSimulatorがありますからこちらでもいいかもしれません。 テストの実装についてですが、パブリックなクラス単位を パブリックなメソッドごとにテストケースを記述していけばいいのではないでしょうか? 実装の内容については正常系はもちろんですが、メソッドの結果をassertEqualsなどで想定値と比較などするとして、 他には例外系として引数にnullを渡してみるなど想定外の物を渡してみての例外発生、その例外の比較。 そんな程度で大丈夫だと思います。 大きなロジックについては結合試験で行えばよいのではないでしょうか?

supercat1
質問者

お礼

回答有難うございます! 「JakartaのCactus」初めて聞きました。調べてみます。 JAVA難しいですね。苦戦続きです。

  • had4149
  • ベストアンサー率18% (9/48)
回答No.1

まず貴方がどのようなプログラムを作りたいのかを教えてもらわないと回答できません。 作りたいプログラムがわかればどのようなテストクラスを作成すれば良いかも自然にわかると思います。

supercat1
質問者

お礼

回答ありがとうございます。 おっしゃる通り抽象的すぎて答えようもないですよね。すいません。出直します。 (検証したい動作はわかるのですが、JAVAがまだよく分かってなく具体的にどういうテストクラスを書いていいのか分からない状況です)

関連するQ&A

  • 抽象クラスをJUNITでテストする方法

    抽象クラス内に実装メソッドと抽象メソッドがある場合に、 そのクラスをJUNITでテストしたいと思っています。 通常のクラスであれば、そのクラスに対するテストクラスを 作成して、テストクラス内でテスト対象クラスをnewして テストケースを記述していくと思いますが、 上記のような抽象クラスの場合は、 どういった形でテストクラスを作成すれば良いのでしょうか? 抽象クラスはnewできないので、 抽象クラスを実装したクラスをまず作成して そのクラスに対するテストクラスを作成するのでしょうか? お薦めの方法や一般的な方法があれば教えてください。 以上、よろしくお願い致しますm(__)m 【環境】 JDK1.4.2 JUNIT3.8.1

    • ベストアンサー
    • Java
  • JUnitのテスト結果の取得方法

    昨日でプロジェクトも一段落つき、現在eclipse + JUnitプラグインでテストする勉強をしています(遊んでる!?) そこで、テストをする材料として今回プロジェクトで作成されている共通クラスを使用していました。 で、全角英数記号文字を半角英数記号文字に変換するメソッドがありテストを書こうとして考えてしまいました。 ”→"と返ってくるはずなのですが、 aasertEquals(""",戻り値)と記述出来ませんよね? このような場合、どうすればいいのでしょうか? まあ、JUnitだけにかかわる問題でもないでしょうし、一般的な事なのかもしれませんがご指導ください。

  • JUnitでのプライベートメソッドのテストについて

    JavaSE6で開発をしております。 eclipse3.6を用いて、JUnit3でテストを行っているのですが、 クラスのプライベートメソッドをテストするにはリフレクション以外の方法はないのでしょうか。 リフレクションを使う方法ですと、テストコードが複雑になりがちで、publicメソッドに比べると、テストするのがしんどいです。 JUnit3に限らない、他のテストフレームワークでも構いませんので、プライベートメソッドをテストする、よい方法はないものでしょうか。

    • ベストアンサー
    • Java
  • Junit Testの時privateで宣言したメソッドのテスト方法

    お疲れ様です。 junitテストクラスの作成する時 まずテスト対象のクラスをobject生成しますが、 privateで宣言してるメソッドはobject生成後も呼べないから どうやってテスト出来るか分かりません。。。。

    • ベストアンサー
    • Java
  • EclipseでServlet/JSP

    エクリプス2.0.2を使っていますが、Servlet/JSPを使った開発でひとつ疑問があります。 ちなみに、 http://www.atmarkit.co.jp/fjava/rensai2/eclipse03/eclipse03.html で各種設定いたしました。 JSPを作成するのは問題ないのですが、 Servletのクラスを作るときに、新規→クラスで、ソースフォルダがプロジェクト名か、j2srcのどちらかしか選択できません。コンパイルして、そのクラスをclassesに移動してやりましたが、それを実行するときに、 http://localhost:8080/myWeb/servlet/Hello とすると、Helloクラスをダウンロードするような形になってしまうのです。URLはなんパターンか変えてやってみましたが、できません・・・。 どうすればうまくサーブレットを作って実行できるのでしょうか? 宜しくお願いします。

  • javaサーブレットのweb.xmlについておしえてください

    サーブレット作成中です。初心者です。 まずやりたいことは a.jspを作成しa.jspではformタグのactionにSampleを指定しています。 そして/test/Best.classを実行し、 b.jspに値を表示させます。つぎにb.jspからSample2参照させ /test/Best2.classを実行させたいと思いますが、 以下のようにweb.xmlに書いているのですが うまくいきません。 何がいけないのでしょうか?他に何か設定等いるのでしょうか? また他に手段があるのでしょうか? おしえてください。 ※ちなみにSampleだけの場合はうまくいっています。 SampleとSample2というように二つ設定させると うまくいきません。 ------ web.xmlの中身の一部------- <servlet> <servlet-name>Sample</servlet-name> <servlet-class>test.Best</servlet-class> <servlet-name>Sample2</servlet-name> <servlet-class>test.Best2</servlet-class> </servlet> <servlet-mapping> <servlet-name>Sample</servlet-name> <url-pattern>/Sample</url-pattern> <servlet-name>Sample2</servlet-name> <url-pattern>/Sample2</url-pattern> </servlet-mapping> --------------------------

    • ベストアンサー
    • Java
  • servletからjspへの遷移時に文字化け

    質問します。 用件:servletからjspに遷移する際に文字化けが発生します。 環境: Eclipse3.7 java6 ApacheTomcat7.0 フレームワークはなし 内容: フォワードでTest.jspに遷移します。 RequestDispatcher requestdispatcher = request.getRequestDispatcher("/Test.jsp"); requestdispatcher.forward(request, response); Test.jspに遷移すると、Test.jspの「<body>テスト</body>」がブラウザ表示時に文字化けします。 (英数字は化けません。) servletを使用せず、Test.jspに直接アクセスすると文字化けが起きません。 servletで、Test.jspで適当なhiddenを作成し、servletでgetParameterをSystem.out.printしても 文字化けなどはおきません。 また、RequestDispatcherでは文字化けが起こりますが、 response.sendRedirect("/Test.jsp"); だと文字化けがおきません。 現状、sendRedirectとsessionを使用して値の受け渡しを行っておりますが、 RequestDispatcherを使用したいので困っております。 また文字コードは javaファイルそのものはSJIS jspは<%@ page language="java" contentType="text/html; charset=SJIS" %> となっております。 わかりにくい文章で申し訳ありませんが、ご回答の程よろしくお願いします。

    • ベストアンサー
    • Java
  • 総合テスト

    総合テストって、結合(総合)テストであったり、システム(総合)テストであったりします。結合テストのためのチェックリストを作成することはありませんでしたが、インタフェース以外にチェックするのですか(・・?サブシステムの中でのテストが総合でしょうか。やはり中身も確認しないといけないのでしょうか(-.-)。総合テストでもチェックリスト作成しますか?一回出力して中身がOKぐらいでしょうか。全く中身見なくてよければ、ラクそうなのですが(・_・)

  • JUnitのテストメソッドごとのメモリの確保とかの話

    JUnit関連の少しコアな話になります。 JUnitではデフォルトでは、実行する際初期処理としてまずテストクラス内のテストメソッドの数だけテストクラスをインスタンス化し、その後各テストメソッドを実行していく、という仕様になっているようです。そしてかつ、各インスタンスはテストクラス内のすべてのテストメソッドが終了するまでインスタンスの破棄は行わないようです。 上記の仕様であるはずだと言う根拠は、テストクラスにコンストラクタを作成し、そこにsysoutを記述することにより確認をしました。 上記の仕様であることが主原因で、Out of Memoryが発生してしまいます。 他にそうなってしまう原因はいくつかあって ・Springを利用していて初期化にメモリを結構使う ・テスト対象のクラスが複雑でテストメソッドの数が多くなる ・パソコンの物理メモリに限界がある ・DJUnitでカバレッジを調査することもあり、またテスティングペアの名前は統一したいので、テスト対象クラスとテストクラスを1対1に対応させたい。 などが挙げられます。VMの実行メモリを大きくしたり、テストクラスを分割してしまうなどの対処療法を行ってきましたが、何とか主原因をつぶす方法は無いものかと質問をした次第です。 (その他、使用しなくなったオブジェクトにnullをセットしたり明示的にgcの実行を指示する等の苦肉の策を行いましたが、ほとんど影響しませんでした) 前置きが長くなりましたが質問は、JUnitでテストを行う際、テストクラス内のテストメソッドの数だけインスタンス化しているものを、あるテストメソッドを実行する直前にインスタンス化し、そのテストメソッドが終了したらそのインスタンスを破棄するような設定はないのか、あればその方法を教えてほしい、ということになします。 だいぶ分かりにくい説明かもしれませんが…。 以上よろしくお願いします。

    • ベストアンサー
    • Java
  • beanのスーパークラスは何?

    eclipse3.1+TOMCAT5.0を使ってwebアプリケーションの勉強をしています。eclipseはクラスを新規作成する時にスパークラスを選択出来ますよね。そこで質問なんですが、サーブレットはjavax.servlet.http.HttpServletを親として、新規クラスを作成するのですが、beanは何を親クラスとしたらいいのかよく分かりません。お手数をお掛けしますが、どなたかご教授いただけませんかお願いします。

    • ベストアンサー
    • Java