unit-testing - 如何为 SAPUI5/OPENUI5 应用程序设置测试用例?

标签 unit-testing automated-tests sapui5

我尝试为给定的 UI5 应用程序原子化我的测试。因此,我在 WebContent 下创建了一个名为 test-resources 的文件夹。在该文件夹中,我放置了两个文件用于首次测试。

第一个文件:experimental.qunit.html,其中包含一些第一个工作单元测试代码。

第二个文件:experimental.opa.html,其中包含来自文档的示例代码。

测试部分如下所示:

opaTest("Should find a Button with a matching property", function(Given, When, Then) {
    // Act
    Given.iStartMyAppInAFrame("index.html");

    When.waitFor({
        viewName : "view.master.Master",
        controlType : "sap.m.Button",
        matchers : new sap.ui.test.matchers.PropertyStrictEquals({
            name : "icon",
            value : "sap-icon://show"
        }),
        success : function (aButtons) {
            debugger;
            ok(true, "Found the button: " + aButtons[0]);
        },
        errorMessage : "No button with property icon equal to sap-icon://show"
    });
    Then.waitFor({
        // not implemented
    });
    Then.iTeardownMyAppFrame();
});

首先我假设我也可以搜索带有图标属性的按钮。 第二个假设是,viewName 是 View 文件的名称和文件夹?在应用中, View 是拆分应用的主视图。

我这样开始测试: * 在 Eclipse 中标记项目并选择运行为“Web App Preview” *当然比我看到我的普通应用程序 * 我用 test-resoruces/experimental.opa.html 替换了 index.html 部分 * 现在我可以看到测试并且我的应用显示在 iframe 中

但是: 1. 按钮选择不起作用,有人知道哪里出了问题吗? 2. 如果我更改 html 代码,我必须一直重新启动“Web App Preview”,重新加载似乎不起作用。更新测试代码后是否有“更好”的方式来运行测试?

应用程序本身被定义为一个组件,主视图是一个 SplitApp xml 文件,其中不包含以下内容:

<mvc:View
    xmlns:mvc="sap.ui.core.mvc"
    displayBlock="true"
    xmlns="sap.m">
    <SplitApp id="idAppControl" />
</mvc:View>

与此同时,我发现并修复了问题。我的 PropertyStrictEquals 语法错误。

重启问题(Web App Preview)依然存在。

我还发现了一个有用的例子: https://openui5beta.hana.ondemand.com/test-resources/sap/m/demokit/cart/test/BuyProductJourney.qunit.html

这里提到: http://scn.sap.com/community/developer-center/front-end/blog/2014/10/16/javascript-based-integration-tests-for-sapui5-apps-with-opa

最佳答案

(查看 developper guide 中的测试教程)

首先,在您的示例中,您混合了抽象级别。直接在您的jurney(测试步骤的顺序)中不应有任何代码,例如waitFor(),因为那是特定于页面的代码。因此,您应该创建页面,在您实际安排、操作和断言发生的地方。在旅程中,您只调用它们。像这样( source ):

        opaTest("Should see the post page when a user clicks on an entry of the list", function (Given, When, Then) {
        // Arrangements
        Given.iStartMyApp();

        //Actions
        When.onTheWorklistPage.iPressOnTheItemWithTheID("PostID_15");

        // Assertions
        Then.onThePostPage.theTitleShouldDisplayTheName("Jeans");
    });

那些对象 onTheWorklistPageonThePostPage 是您实际的测试步骤,您可以在其中搜索对象并触发点击或检查显示的文本,您可以像这样创建它们:

    Opa5.createPageObjects({
        onTheWorklistPage: {
            baseClass: Common,
            actions: {...},
            assertions: {...}
        }
    })

现在,在这些操作和断言中,您将 waitFor() 用于获取元素并对它们执行某些操作。 API 中描述了此功能

PS:你的问题很散漫,我不确定我是否回答了你的问题,如果没有,请评论。

关于unit-testing - 如何为 SAPUI5/OPENUI5 应用程序设置测试用例?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31298776/

相关文章:

java - 我怎样才能识别这个元素

tomcat - securing - openUI5 在 Tomcat 服务器上针对非 SAP oDATA 运行

odata - 如何在 OData 调用中排除多个值?

Python Nose /单元测试 : where to define constants such as credentials

java - 返回页面引用作为页面上操作的结果?

unit-testing - 如何对谷歌应用程序脚本进行单元测试?

python - 为什么 django.test.client.Client 不让我登录

javascript - SAPUI5 中的 jQuery 日期选择器

Angular 单元测试 : 'mat-nav-list' is not a known element

java - EasyMock 方法参数中的长空匹配