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

时间:2015-07-08 16:44:40

标签: 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();
});

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

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

但: 1.按钮选择不起作用,任何人都知道什么是错的? 2.如果我更改html代码,我必须一直重新启动“Web App Preview”,重新加载似乎无法正常工作。更新测试代码后是否有“更好”的方法来运行测试?

app本身被定义为一个组件,主视图是一个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

1 个答案:

答案 0 :(得分:0)

(看一下developper guide中的测试教程)

首先,在您的示例中,您将混合抽象级别。直接在您的 jurney (测试步骤的顺序)中,不应该有任何代码,例如waitFor(),因为这是特定于页面的代码。所以你应该创建页面,在你的实际安排,行动和断言发生的地方。在jurney你只打电话给他们。像这样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:你的问题是非结构化的,如果我回答你的问题,我不是不舒服,如果没有,请发表评论。