gpt4 book ai didi

swift - 在 XCode 中编写模块化 UI 测试

转载 作者:搜寻专家 更新时间:2023-11-01 07:13:16 25 4
gpt4 key购买 nike

我对 XCode 上的 UI 测试还很陌生。我发现记录功能非常酷,它工作得很好,但只要你有决策点,代码就会打破 DRY 原则。因此我的想法是编写模块化测试并根据用户登录状态、角色等调用它们。

问题是我找不到将我的函数标记为非测试的方法(它们是在适当的时候从主入口点调用的助手)。这是我想出来的

func testExample() {
let exists = NSPredicate(format: "exists == true")

let app = XCUIApplication()

if(!app.staticTexts[""].exists){
testLaunchScreen()
}
testAsRole1()

}

func testLaunchScreen(){
let app = XCUIApplication()

let scrollViewsQuery = app.scrollViews
scrollViewsQuery.otherElements.containing(.image, identifier:"image0").element.swipeLeft()
app.buttons["Continue"].tap()
testFacebookLoginScreen()
}


func testFacebookLoginScreen() {
let app = XCUIApplication()

// set up an expectation predicate to test whether elements exist
let exists = NSPredicate(format: "exists == true")
// as soon as your sign in button shows up, press it
let facebookSignInButton = app.buttons["Join with Facebook!"]
expectation(for: exists, evaluatedWith: facebookSignInButton, handler: nil)
facebookSignInButton.tap()


self.waitForExpectations(timeout: 10, handler: nil)
if(app.staticTexts["Confirm"].exists){
// create a reference to the button through the webView and press it
let webView = app.descendants(matching: .webView)
webView.buttons["OK"].tap()
} else {
let webViewsQuery = app.webViews
webViewsQuery/*@START_MENU_TOKEN@*/.textFields["Email or Phone"]/*[[".otherElements[\"Welcome to Facebook\"]",".otherElements[\"main\"].textFields[\"Email or Phone\"]",".textFields[\"Email or Phone\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/.typeText("user@tfbnw.net")
webViewsQuery/*@START_MENU_TOKEN@*/.secureTextFields["Facebook Password"]/*[[".otherElements[\"Welcome to Facebook\"]",".otherElements[\"main\"].secureTextFields[\"Facebook Password\"]",".secureTextFields[\"Facebook Password\"]"],[[[-1,2],[-1,1],[-1,0,1]],[[-1,2],[-1,1]]],[0]]@END_MENU_TOKEN@*/.typeText("password")
webViewsQuery.buttons["Login"].tap()
}
// wait for your app to return and test for expected behavior here
self.waitForExpectations(timeout: 10, handler: nil)
}


func testAsRole1(){

///
}

问题是所有 testXXX 函数都按顺序运行,这不是我想要的,我只想运行 testExample。我找到了一些 post关于扩展,但我认为这些不适合我的情况

编辑:我找到了 https://github.com/kif-framework/KIF这看起来是一个非常好的库,但我希望能够只记录序列并将它们命名为我可以重用的函数,我认为它会更容易维护

非常感谢

最佳答案

XCTest 将 XCTestCase 子类中以 test 开头的每个方法都视为独立测试。只需更改您的方法名称。或者,您可以将它们放在一个单独的类中,该类不继承自 XCTestCase,但这样您就失去了在那里定义的便捷方法。

来自documentation :

Test methods are instance methods that have no parameters, do not return a value, and whose name begins with the lowercase word "test".

因此,您可以通过多种不同的方式修改这些方法,以免将它们视为测试。

关于swift - 在 XCode 中编写模块化 UI 测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43705094/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com