Ios Xcode UI测试:有条件地执行测试

Ios Xcode UI测试:有条件地执行测试,ios,swift,xcode,xcode-ui-testing,Ios,Swift,Xcode,Xcode Ui Testing,使用Xcode UI测试,我希望实现在应用程序中存在特定UI元素时运行的代码。我的应用程序处于已登录状态,如果用户当前已登录,我希望将其注销。我找不到文件来建议如何摆脱这个纸袋 我读过的所有内容都显示了两种可能的路径:使用xctasert(如果元素不存在,将导致测试立即失败)和使用xctespection(如果元素不存在,将导致测试超时)。如果应用程序处于给定状态,我需要一种更简单的方法来运行不同的代码 为了把它写进代码中,我正在寻找这样的东西: if let signOutElement =

使用Xcode UI测试,我希望实现在应用程序中存在特定UI元素时运行的代码。我的应用程序处于已登录状态,如果用户当前已登录,我希望将其注销。我找不到文件来建议如何摆脱这个纸袋

我读过的所有内容都显示了两种可能的路径:使用
xctasert
(如果元素不存在,将导致测试立即失败)和使用
xctespection
(如果元素不存在,将导致测试超时)。如果应用程序处于给定状态,我需要一种更简单的方法来运行不同的代码

为了把它写进代码中,我正在寻找这样的东西:

if let signOutElement = app.collectionViews.staticTexts["Sign Out"] {
    signOutElement.tap()
}

唉,这是行不通的。

在测试期间使用条件语句没有什么错。你的代码的问题是,从快速的角度来看,它是胡说八道<代码>if let在这里没有意义,因为表达式不返回可选值。毕竟,你还得谈谈法律问题

为什么不试试这样的

if app.collectionViews.staticTexts["Sign Out"].exists

在测试期间使用条件语句没有什么错。你的代码的问题是,从快速的角度来看,它是胡说八道<代码>if let在这里没有意义,因为表达式不返回可选值。毕竟,你还得谈谈法律问题

为什么不试试这样的

if app.collectionViews.staticTexts["Sign Out"].exists

根据我的经验,测试通常是以一种相当僵硬的心态完成的——你把应用程序置于你想要的状态,这样你就可以测试代码的特定部分。因此,在这种情况下,您应该知道用户处于登录状态,因此需要注销。从理论上讲,你可以在页面上使用某种定时器来实现这一点,该定时器每隔一段时间就会触发一次并寻找注销,但同样,这不是通过test imo必须要做的事情。根据我的经验,测试通常是以一种相当僵硬的心态完成的——你将应用程序置于你想要的状态,这样你就可以测试代码的特定部分。因此,在这种情况下,您应该知道用户处于登录状态,因此需要注销。理论上,您可以通过页面上的某种计时器来实现这一点,该计时器每隔一段时间就会触发一次并寻找注销,但这也不是您必须通过test imo来完成的事情。我还意识到XUIElement上有一个exists方法。谢谢你的回答!如果我的回答不对,就不要接受!我不确定
count
在这里是否有效。请更正我的代码,使其正常工作!!!!哎呀,如果你有那么强烈的感觉的话!谢谢你把它修好!是的,我的感觉很强烈,因为我不想让坏代码出现在我的名字上。你是一个战斗在前线和摔跤这个代码地面,所以你知道什么是最好的工作。谢谢你的帮助。我还意识到XUIElement上有一个exists方法。谢谢你的回答!如果我的回答不对,就不要接受!我不确定
count
在这里是否有效。请更正我的代码,使其正常工作!!!!哎呀,如果你有那么强烈的感觉的话!谢谢你把它修好!是的,我的感觉很强烈,因为我不想让坏代码出现在我的名字上。你是一个战斗在前线和摔跤这个代码地面,所以你知道什么是最好的工作。我感谢你的帮助。