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

3
我尝试将给定的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 是视图文件的名称和文件夹?在应用程序中,视图是分割应用程序的主视图。
我这样开始测试: * 在 Eclipse 中标记项目并选择运行为“Web App 预览” * 然后当然我会看到我的常规应用程序 * 我将 index.html 部分替换为 test-resoruces/experimental.opa.html * 现在我可以看到测试,我的应用程序显示在 iframe 中
但是: 1. 按钮选择不起作用,有人知道问题在哪里吗? 2. 如果我更改 html 代码,我必须始终重新启动“Web App 预览”,重新加载似乎无效。是否有一种“更好”的方法在更新测试代码后运行测试?
该应用程序本身被定义为一个组件,主视图是一个 SplitApp xml 文件,其中什么也没有:
<mvc:View
    xmlns:mvc="sap.ui.core.mvc"
    displayBlock="true"
    xmlns="sap.m">
    <SplitApp id="idAppControl" />
</mvc:View>

与此同时,我发现了问题并进行了修复。我的PropertyStrictEquals语法有误。
Web App预览的重新启动问题仍然存在。
我还发现了一个有用的例子: 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个回答

1

(请查看开发者指南中的测试教程)

首先,在您的示例中,您混合了抽象级别。在您的旅程(测试步骤的顺序)中,不应该有像waitFor()这样的代码,因为那是页面特定的代码。所以你应该创建页面,在那里进行实际的安排、操作和断言。在旅程中,你只需要调用它们。就像这样源码

        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中有描述。

附注:您的问题非常不结构化,我不确定我是否回答了您的问题,如果没有,请评论。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接