GWTTestCaseを使ってJUnitを用いたモジュールのテストが可能です。 GWTではGWTクラスのテストが可能同じJava言語とはいえ、Widgetを始め、ClientBundleなど普通のJavaとしてはインスタンス化できないクラスが沢山あります。 こういうクラスのテストは、GWTモジュールとして起動してテストするGWTTestCaseでしかできません。 asyncのGWT-RPCもテストできるServletとして送り先を起動してテストできます。 public void testGreetingService() { GreetingServiceAsync greetingService = GWT.create(GreetingService.class); ServiceDefTarget target = (ServiceDefTarget) greetingService; target.setServiceEntryPoint(GWT.getModuleBaseURL() + "/test/greet"); delayTestFinish(10000); greetingService.greetServer("GWT User", new AsyncCallback<String>() { public void onFailure(Throwable caught) { fail("Request failure: " + caught.getMessage()); } public void onSuccess(String result) { assertTrue(result.startsWith("Hello, GWT User!")); finishTest(); } }); } ドキュメントによるとうまくいかないケースもあるようです。 DevモードでテストできるDevモードでテストできるので高速にテスト可能です。 (もちろんProductionモードでもテスト可能です。この場合、テストの前にコンパイルします) テストできないことLayout部分はテストできません。 ページにアクセスして、ボタンクリックしたら、フォーム内容が変わっているのを確認するというようなことはできません。 こういう動作テストは通常のHtmlUnitやCanoo WebTestなどを用いたテストで行います テストの作り方既存のGWT Projectからテストの作成gwt.xmlの作成おそらくtestというフォルダーがすでにProject中あります。 メインモージュールと同じフォルダー構成になっていると思います。 そこのclientの上のフォルダーに新しく新規でModuleを作成します。 モジュール名は何でもかまいません。この時のinhertitmodule欄に、テスト元のモジュールを選びます。 するとモジュール名.gwt.xmlというファイルができます。 RPCもテストする場合Servletのマッピングも記述します。 <?xml version="1.0" encoding="UTF-8"?> <module> <!-- Inherit our applications main module. --> <inherits name='tmp.main'/> <!-- Specify the path to any remote services. --> <servlet path="/test/greet" class="tmp.server.GreetingServiceImpl" /> </module> UnitTestの作成clientパッケージからGWTTestCaseを拡張したJUnitを作成します。 この時、ついでにtestフォルダーを新規source folderでtestを指定して、source folderにしておきます。 そして、getModuleName()を上書きしたクラスを作成します。返し値はさきほど作成したテストモジュール名です。 public String getModuleName() { return "test.mytest"; } これでGWT Unit Testからテスト実行できるはずです。 公式ドキュメントにあるようなsrcやtestフォルダーは最初から追加されている気がします。 一度、テストコード付きのProjectを作成して、見比べてみるといいでしょう。 テストコード付きのProjectを作成GWT付属のコマンド webAppCreatorを使って、最初からテストコードを含むProjectを作成できます。 これは、WebAppCreator コマンドのオプションに、junit.jarの場所を指定して実行します。 WebAppCreatorは、通常Eclipseで作業していると GWT2.0.3のプラグインですと、以下のフォルダーにあります。 C:\eclipse3.5\plugins\com.google.gwt.eclipse.sdkbundle.2.0.3_2.0.3.v201002191036\gwt-2.0.3 JUnitも C:\eclipse3.5\plugins\org.junit_3.8.2.v20090203-1005 とかにあります。 注意事項super-sourceどうもプロジェクト直下のsuperフォルダーにはテストは対応していないような気がする 直下のsuperフォルダーはやめて、パッケージのsuperは移動した方がよさそうだ。 |
GWT >