4

JUnit4.8.1でGWT2.4を使用しています。GWTTestCaseを拡張するクラスを作成するときに、ページ上のボタンのクリックをシミュレートしたいと思います。現在、私のonModuleLoadメソッドでは、このボタンはローカルフィールドのみです...

public void onModuleLoad() {
    final Button submitButton = Button.wrap(Document.get().getElementById(SUBMIT_BUTTON_ID));
    ...     

    // Add a handler to send the name to the server
    GetHtmlHandler handler = new GetHtmlHandler();
    submitButton.addClickHandler(handler);

GWTTestCaseからこのボタンをクリックすることをシミュレートするにはどうすればよいですか?このボタンをパブリックメンバーアクセサーとして公開する必要がありますか?アクセスするためのよりエレガントな方法はありますか?これが私のテストケースにあるものです...

public class GetHtmlTest extends GWTTestCase {

    // Entry point class of the GWT application being tested.
    private Productplus_gwt productPlusModule;

    @Override
    public String getModuleName() {
        return "com.myco.clearing.productplus.Productplus_gwt";
    }

    @Before
    public void prepareTests() { 
        productPlusModule = new Productplus_gwt();
        productPlusModule.onModuleLoad();
    }   // setUp

    @Test
    public void testSuccessEvent() { 
        // TODO:  Simulate clicking on button
    }   // testSuccessEvent

}

ありがとう、-デイブ

4

3 に答える 3

2

buttonElement.click()(またはButtonElement.as(buttonWidget.getElement()).click()、またはButtonElement.as(Document.get().getElementById(SUBMIT_BUTTON_ID)).click())と同じくらい簡単にすることができます

ただし、GWTTestCaseは独自のHTMLホストページでは実行されず、空のページで実行されるため、モジュールの負荷をシミュレートする前に、まずページ内にボタンを挿入する必要があることに注意してください。

于 2011-10-28T17:06:58.253 に答える
2

gwt-test-utilsは、ニーズに答えるのに最適なフレームワークのようです。GWTTestCaseから継承する代わりに、 gwt -test-utils GwtTestクラスを拡張し、スタートガイドに示されているように、Browserクラスを使用してクリックテストを実装します。

  @Test
public void checkClickOnSendMoreThan4chars() {
   // Arrange
   Browser.fillText(app.nameField, "World");

   // Act
   Browser.click(app.sendButton);

   // Assert
   assertTrue(app.dialogBox.isShowing());
   assertEquals("", app.errorLabel.getText());
   assertEquals("Hello, World!", app.serverResponseLabel.getHTML());
   assertEquals("Remote Procedure Call", app.dialogBox.getText());
}

ボタンを非公開にしておきたい場合は、内省によってボタンを取得できます。しかし、私のアドバイスは、ビューのウィジェットパッケージを保護し、それらにアクセスできるように同じパッケージで単体テストを作成することです。より説得力があり、リファクタリングに適しています。

gwt-test-utilsは、内省的な説得力を提供します。たとえば、プライベートである可能性のある「dialogBox」フィールドを取得するには、次のようにすることができます。

 DialogBox dialogBox = GwtReflectionUtils.getPrivateFieldValue(app, "dialogBox");

ただし、GwtReflectionUtilsの使用は必須ではないことに注意してください。gwt-test-utilsを使用すると、制限なしでGWTクライアントサイドテストで任意のJavaクラスを使用できます:)

于 2011-10-31T13:44:59.443 に答える
0

あなたはこのようにそれを行うことができます:

YourComposite view = new YourComposite();
RootPanel.get().add(view);

view.getSubmitButton.getElement().<ButtonElement>cast().click();
于 2013-01-07T05:26:54.853 に答える