问题标签 [xcode-ui-testing]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
macos - Xcode 7 UITesting 用于 OS X 上的菜单栏应用程序
我正在尝试将 XCode 7 UITesting 用于 Dropbox 等菜单栏应用程序,Mac OS X 上的 1Password。这是否可以使用 Xcode 7 提供的最新功能自动化 UI 测试?我了解 UI 测试适用于 iOS 应用程序,但演示从未在视频中显示它是否适用于操作系统应用程序。如果它适用于 OS X 应用程序,但它适用于菜单栏应用程序吗?请指导我解决这个问题。
ios - 使用 Xcode 7 运行 UITesting 时出现“NSInternalInconsistencyException”
好的,到目前为止,我还无法在任何测试版中运行此测试。我遇到的一些问题在这里和这里
现在,我觉得我错过了一些东西。
这是我到目前为止的进展
- 创建新项目时启用“UI 测试”选项。这实际上为我增加了一个目标。所以我应该很高兴——至少我是这么想的。
- UI Testing下的swift文件已经导入了“XCTest”,是“XCTestCase”的子类。
- setup() 启动应用程序 XCUIApplication().launch()
- 我添加了以下内容(通过点击记录按钮)
然后,我运行了这个测试。
整个事情甚至在调用测试之前就失败了,就在 setup() 中启动应用程序之后,使用以下命令
*** -[XCUIApplication init] 中的断言失败,/Library/Caches/com.apple.xbs/Sources/XCTest_Sim/XCTest-8170.3/XCTestFramework/UI Testing/XCUIApplication.m:76 /Users/UserName/Documents/Projects/ Testing/UiTesting/UITestingApp/UITestingApp.swift:0:错误:-[UITestingApp.UITestingApp testSimpleTap]:失败:捕获“NSInternalInconsistencyException”,“没有通过测试配置指定目标应用程序路径:
testBundleURL:file:///Users/UserName/ Library/Developer/CoreSimulator/Devices/E3201DC2-CAD3-48C3-95F5-15E18DCA1836/data/Containers/Bundle/Application/8B33FC59-FC03-41F8-BD21-43D81BA2D355/UITestingApp-Runner.app/PlugIns/UITestingApp.xctest/
productModuleName:(null) testsToSkip:(null) testsToRun:(null) reportResultsToIDE:no sessionIdentifier:<__NSConcreteUUID 0x7f93e146c0b0> F242796B-ED26-4AA7-861A-540D2D93CB8F pathToXcodeReportingSocket:(null) disablePerformanceMetrics:notreatMissingBaselinesAsFilePathures:nobaseline :(null) targetApplicationBundleID:(null) reportActivity:no
有人遇到这个问题或对我可能遗漏的内容有任何建议吗?
注意:我确实将 UI 测试目标的“目标应用程序”设置为我的应用程序
更新:我注意到这适用于 Xcode 的所有 beta/最终版本 - 相应地更新了标题
ios - UITests:不调用 deinit
为什么当我在Xcode中测试我的控制器时,一切都很好,但deinit
没有调用方法。这是对的吗?
虽然应用程序正常工作,但它很好,但不适用于UITest
目标。
对于复杂的结构,模拟器会一遍又一遍地分配更多的对象,并且......根本不要释放它。因此,通常在较慢的机器上,应用程序有时会无缘无故退出......并且无法完成测试。
使用 Xcode 8、iOS 10、macOS Sierra。
ios - 如何判断我在 Xcode UI 测试中使用的是哪个设备?
在运行 Xcode UI 测试时,我想知道正在使用哪个设备/环境(例如 iPad Air 2、iOS 9.0、模拟器)。
我怎样才能得到这些信息?
xcode - 不可构建可测试
试图找出使用 XCODE 7 进行 UI 测试的第一步。我的项目有一个 pods 组件。对于我的实际项目,记录按钮被禁用,但如果我在 Pods 工作区/文件夹中创建测试目标,则它被启用。抓住的是,如果我单击记录按钮,它会给出消息 - “不可构建可测试”。我正在使用 XCode 7Beta3。如果我在这里缺少任何设置,有任何想法。
另一个会话中的一个答案是删除并重新创建测试目标。我怎么做?
ios - Xcode UI 测试 [xcode7-beta6] - 使用可访问性标签时断言实际标签值
这个问题其实很简单:
在此对象上使用可访问性标签时,是否有办法从特定标签(例如 UILabel)断言显示的值?
据我所知,示例中所做的所有断言(例如 XCTAssertEquals),无论是来自WWDC Talk还是Blogposts,都只是检查是否存在用于查询之类的元素XCTAssertEquals(app.staticTexts["myValue"].exists, true)
或表中的单元格数量是否正确XCTAssertEquals(app.tables.cells.count, 5)
. 因此,当避免使用可访问性标签时,可以检查一个对象是否显示了某个值,而不是哪个对象/元素。并且当使用可访问性标签时,它剥夺了我查询显示值的机会,因为app.staticTexts["myValue"]
现在将无法提供结果但app.staticTexts["myAccessibilityLabel"]
会命中。
假设我想测试我的“将新单元格添加到表格”功能,我可以测试确实有一个新单元格添加到列表中,但我不知道新单元格是添加到列表顶部还是底部或介于两者之间。
对我来说,在 UI 测试方面,检查特定元素是否具有特定值的简单方法应该是不费吹灰之力。
由于缺少文档,我可能会忽略显而易见的事情。如果是这样,请告诉我。
ios - 如何检测 iOS 应用程序是否在 UI 测试模式下运行
我希望我的应用程序在 UI 测试模式下运行时运行特殊代码(例如重置其状态)。我查看了应用程序从 UI 测试运行时设置的环境变量,并且没有任何明显的参数可以区分应用程序正常运行与 UI 测试中运行。有没有办法找出来?
我不满意的两个解决方法是:
- 设置
XCUIApplication.launchEnvironment
一些我稍后在应用程序中检查的变量。这不好,因为您必须在setUp
每个测试文件的方法中设置它。我尝试从方案设置中设置环境变量,但在运行 UI 测试测试时不会传播到应用程序本身。 - 检查环境变量是否存在
__XPC_DYLD_LIBRARY_PATH
。这看起来很 hacky,并且可能只是因为我们如何设置目标构建设置的巧合而现在才起作用。
ios - Xcode UI 测试:我可以使用 UI 测试脚本访问目标应用程序文件夹吗?
当我创建 UI 测试脚本时,我遇到了一个问题。我需要访问在目标 APP 文件夹下创建的日志文件。但是,UI 测试 APP 正在作为另一个线程运行。
该方法只能返回 UI Testing APP 文档的路径,不能返回目标应用。
有没有办法访问目标应用程序的文件夹?