我尝试为给定的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
答案 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");
});
这些对象onTheWorklistPage
和onThePostPage
是您的实际测试步骤,您搜索对象并触发点击或检查您创建的显示文本,如下所示:
Opa5.createPageObjects({
onTheWorklistPage: {
baseClass: Common,
actions: {...},
assertions: {...}
}
})
现在,在这些操作和断言中,您可以使用waitFor()
获取元素并使用它们执行某些操作。 API
PS:你的问题是非结构化的,如果我回答你的问题,我不是不舒服,如果没有,请发表评论。