GWT TestCase:模拟点击页面上的按钮



我使用GWT 2.4和JUnit 4.8.1。在编写扩展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
}

谢谢,Dave

可以像buttonElement.click()(或ButtonElement.as(buttonWidget.getElement()).click(),或ButtonElement.as(Document.get().getElementById(SUBMIT_BUTTON_ID)).click())一样简单

但是请记住,GWTTestCase不会在你自己的HTML主机页面中运行,而是在一个空的页面中运行,所以在模拟模块的加载之前,你首先必须在页面中插入你的按钮。

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类,没有任何限制:)

你可以这样做:

YourComposite view = new YourComposite();
RootPanel.get().add(view);
view.getSubmitButton.getElement().<ButtonElement>cast().click();

相关内容

  • 没有找到相关文章

最新更新