ios - XCUITest 预测试设置

标签 ios xcode ui-automation xcuitest qtest

我需要进行预测试配置,在运行 XCUITest(自动化测试)用例之前进行一次设置,

预测试设置示例:(这需要在测试周期中完成一次,以下 API 的输出用于所有测试用例)

  1. 正在获取qTest访问 token
  2. 从远程配置文件中获取qTest URL。

从文档中我发现 XCTestObservation 协议(protocol)的 testBundleWillStart 方法是进行预测试设置的理想位置。

但是 -testBundleWillStart 方法未被调用或执行, 下面列出的所有 XCTestObservation 方法均已正确执行。

  1. testSuiteWillStart
  2. testCaseWillStart
  3. testCaseDidFinish
  4. testSuiteDidFinish

我尝试在 UITest info.plist 中设置 Principal Class 但没有运气,它显示以下错误

Test bundle Info.plist at /var/containers/Bundle/Application/BEAFB0C2-43D5-4C90-B50F-B1FF1A16BC23/MyAppUITests-Runner.app/PlugIns/MyAppUITests.xctest/Info.plist specified MyAppUItests.TestObserver for NSPrincipalClass, but no class matching that name was found.

如何执行testBundleWillStart方法? 任何帮助将不胜感激。

最佳答案

发现问题了, 我的项目名称有一个空格,因此用 _ 替换空格即可。

有关我的项目的信息:

  • 我的项目名称:我的应用
  • 我的项目测试包名称:My-AppUITests

工作解决方案:(用 _ 字符替换空格)

<key>NSPrincipalClass</key>
<string>My_AppUITests.SOTestObserver</string>

让我也分享一些看起来正确但仍然不起作用的事情:

不起作用#1:(用 - 字符替换空格)

<key>NSPrincipalClass</key>
<string>My-AppUITests.SOTestObserver</string> //Didn't work

非工作 #2:(用 $(PRODUCT_NAME) 环境变量替换项目名称)

<key>NSPrincipalClass</key>
<string>$(PRODUCT_NAME).SOTestObserver</string> //Didn't work

关于ios - XCUITest 预测试设置,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67021598/

相关文章:

python - selenium 脚本在 python 上完成后如何保持 chrome 浏览器窗口打开以便重新使用

javascript - 使用 cypress 读取 jsonArray 的内容

ios - 如何在 Swift 3 中将核心数据导出为 CSV?

ios - L2CAP channel ,字节已发送但未到达

ios - 关于 tableView 双对称

ios - 是什么导致 iOS 11 iPad 最近的应用程序停靠栏图标变灰?

ios - Objective-C - 如何遵守多种协议(protocol)?

ios - Xcode 5 添加项目依赖问题

xcode - Xcode 测试导航器中保留已删除的测试

javascript - Chrome 无法打开 Protractor 的 URL