Tag: xcode ui testing

Xcode 7 beta 4 – 在UIlogging上崩溃

在尝试为我的用户界面testing做UIlogging时,应用程序在1次未logging事件之后崩溃。 看着崩溃报告,我发现这个错误: UNCAUGHT EXCEPTION (NSInternalInconsistencyException): ancestorFinder is not being processed by childNodeFinders 任何人也得到这个,也许有人知道这个问题的解决办法?

如何检测iOS应用程序是否在UItesting模式下运行

我希望我的应用程序在UItesting模式下运行时运行特殊代码(例如重置其状态)。 我查看了应用程序从UItesting运行时设置的环境variables,并且没有任何明显的参数来区分应用程序正常运行与UItesting。 有没有办法找出答案? 我不满意的两个解决方法是: 设置XCUIApplication.launchEnvironment与我稍后在应用程序中检查的一些variables。 这不好,因为你必须在每个testing文件的setUp方法中设置它。 我试图从scheme设置中设置环境variables,但是在运行UItestingtesting时不会传播到应用程序本身。 检查是否存在环境variables__XPC_DYLD_LIBRARY_PATH 。 这看起来很不好,现在可能只能工作了,因为我们有如何设置目标构build设置的巧合。

独立视图上的iOS UItesting

我正在尝试在我的iOS项目中joinUItesting,但是有一件事仍然让我担心,看起来你写的所有testing都必须从应用程序的开始开始, 例如,如果我要testinglogin屏幕后面的视图,我的testing必须先在login屏幕上运行,input用户名/密码,单击login,然后转到我要testing的视图。 理想情况下,login视图和下一个视图的testing将完全隔离。 有没有办法做到这一点,或者我完全错过了UItesting背后的哲学?

UItesting失败 – 无论是元素还是任何后代都没有关注secureTextField的键盘

这是我的情况: let passwordSecureTextField = app.secureTextFields["password"] passwordSecureTextField.tap() passwordSecureTextField.typeText("wrong_password") //here is an error 用户界面testing失败 – 任何元素或任何后代都没有键盘焦点。 元件: 哪里不对? 这对正常的textFields secureTextFields用,但问题只出现在secureTextFields 。 任何解决方法?

如何在testing运行时在Xcode UItesting中模拟networking请求?

我们为使用KIF编写的应用程序提供了一套UItesting,我希望将其转换为使用新的Xcode UItesting框架。 这个应用程序是一个Rest AI的客户端,我们目前正在使用NSURLProtocol为响应GET,POST,PUT等服务预定义的JSON文件而进行嘲讽。所有testing都是使用这些文件中的数据定义的,所以我想继续使用它们。 服务器上的相同端点在testing中的不同位置返回不同的数据,所以我不能在前面模拟它们,我需要能够在testing运行时调用一个方法来模拟服务器的下一个响应。 不幸的是,在Xcode UItesting中使用NSURLProtocol不会影响testing的应用程序,而且我只能看到通过启动参数或环境将数据发送到应用程序的方式,例如在此答案中 。 我需要在testing过程中的不同阶段嘲笑他们。 我怎样才能在testing过程中改变UItesting中的networking请求? 或者我怎样才能与正在testing的应用程序进行通信,以便我可以嘲笑请求本身?

如何在Xcode的iOS UItesting中select一个select器视图项?

我有一个select器视图,几个项目:“红色”,“绿色”,“黄色”,“黑色”。 在我的UItesting中,我需要从中select一个特定的“绿色”项目。 我正在使用Xcode 7入侵的XCTest UItestingAPI。 到目前为止我所做的是在unit testing中将整个拾取器视图向上滑动。 这是不理想的,因为它始终将select器视图更改为底部项目(向上滑动时)。 let app = XCUIApplication() app.launch() app.pickers.elementAtIndex(0).swipeUp() XCTAssert(app.staticTexts["Selected: Black"].exists) 另一个但非常相似的方式来改变select器视图是调用pressForDuration … thenDragToElement ,这不是我想要的。 app.pickers.elementAtIndex(0).pressForDuration(0.1, thenDragToElement: someElement) 当我使用UItestingloggingfunction时,它不loggingselect器视图滚动事件。 当我点击select器视图项目时,它会logging下来: app.pickerWheels["Green"].tap() 但在testing运行时实际上并不工作(可能是因为它需要在点击之前先滚动select器视图)。 这是testing的演示应用程序。 https://github.com/exchangegroup/PickerViewTestDemo 更新 现在可以select自Xcode 7.0 beta 6以来的select器视图。 app.pickerWheels["Green"].adjustToPickerWheelValue("Yellow")

Xcode 7 UItesting:closures推送和位置警报

我遇到了Xcode 7 UItesting的问题。 该应用程序在用户login后显示两个警报, 请求位置警报和推送通知警报。 这些通知一个接一个地显示出来。 位置第一个出现。 我试图自动解雇他们开始我的testing。 为了做到这一点,我添加了两个UIInterruptionMonitor ,第一个是位置警报,第二个是通知推送警报。 addUIInterruptionMonitorWithDescription("Location Dialog") { (alert) -> Bool in /* Dismiss Location Dialog */ if alert.collectionViews.buttons["Allow"].exists { alert.collectionViews.buttons["Allow"].tap() return true } return false } addUIInterruptionMonitorWithDescription("Push Dialog") { (alert) -> Bool in /* Dismiss Push Dialog */ if alert.collectionViews.buttons["OK"].exists { alert.collectionViews.buttons["OK"].tap() return true } return false } 但是只有位置被触发,推送通知UIInterruptionMonitor的处理程序永远不会被调用。 […]

从命令行运行iOS应用程序的单个XCTest(UI,Unit)testing用例

是否可以从命令行界面从iOS应用testing目标(而不是所有testing用例)运行单个testing用例或单个testing套件? 您可以使用xcodebuild从命令行运行testing,开箱即用。 当你这样做时,你运行你select的testing目标中包含的所有testing用例。 您也可以使用Fastlane进行扫描 ,尽pipe我相信您只能运行您select的构buildscheme的所有testing(如上所述),所以与xcodebuild没有区别。 您可以使用Facebook上的xctool运行特定的testing,但不使用xcodebuild,并且仅限于在模拟器上运行,而不是实际的iOStesting设备。 我发现直接运行xctest命令行实用程序的引用,但它似乎是一个未公开的function和目标DerivedData。 UItesting的这一事实很复杂, 它们的* xctest文件在一个单独的XCTRunner包中 。

如何在使用Xcode 7 UItesting进行每次testing后重置应用程序数据?

Apple在Xcode 7中引入了新的UItesting,但每当testing启动应用程序时,我都会感到困惑,因为它开始于应用程序之前的数据。 这意味着testing不能独立,可能受到其他testing的影响。 由于运行testing的应用程序无法访问testing应用程序的包,因此无法访问用户默认值和其他数据。 脚本也没有问题,因为它们可以在testing之前或之后运行。 而且如何在iOS上执行NSTask以在每个testing套件之前运行脚本是没有办法的。 有没有办法在每个testing套件之前重置应用程序数据?

XCode 7 UITests与本地化的用户界面

在我的应用程序我使用NSLocalizedString本地化我的应用程序。 现在我想切换到UITests和哈伯testing代码是这样的: [tabBarsQuery.buttons["particiants"] tap]; 这适用于英语,但其他语言失败。 [tabBarsQuery.buttons[NSLocalizedString("PARTICIPANTS",comment:nil)] tap]; 失败 – 可能是因为Localizable.strings在另一个包中。 我如何testing本地化的应用程序?