问题标签 [xctestplan]
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.
xcode - Xcode 11 Export for Localization 不起作用,Include Screenshots 功能被禁用,并且在测试日志中找不到 XCUITest 屏幕截图附件
我在使用 Xcode 11 上的“本地化导出”功能导出屏幕截图时遇到问题。我目前正在创建 XCUITest 套件,在其中测试应用程序的某个 UI 功能,并且我想截取每个页面的屏幕截图应用程序作为每个测试用例通过。
我正在使用 xctestplan,在共享设置-> 配置-> UI 测试下,我有
- 自动截图 = 开
- 本地化屏幕截图 = 开
- 附件 = 打开,并保留所有
但是,在我运行测试后,当我选择 Editor->Export for Localization 时,我无法选择“Include Screenshots”。此外,它还给我一个黄色警告标志,上面有“本地化问题的屏幕截图”之类的文字。
另外,测试通过后,我可以将图片 screenshot.png 定位为报告导航器中列出的附件,以及标题为“本地化屏幕截图”的屏幕截图,但目前我无法导出它们,除非我手动通过它一个一个并通过右键单击保存每个文件。
我希望能够导出这些屏幕截图并将它们收集到指定的目录文件夹中,而无需手动浏览所有屏幕截图以保存每个图像。
我尝试过: 1. 清理构建文件夹,删除 Derived data /users/'ID'/Developer/Xcode/DerivedData 中的日志 2. 在 UItests 方案以及实际应用程序方案(可执行文件)下运行它 3. 删除所有模拟器上的内容和设置,退出 Xcode 并重新启动 Mac,然后重新启动 Xcode
xctest - XCTest 将信息从应用程序(被测)发送回 XCTests
情况:
考虑一个正在使用 xcode/XCTests 测试的 ios/swift/app。该应用程序还包括一些日志记录到控制台(以及Google/Firebase/Crashlytics作为非致命异常:效果很好!)。
为此,正在使用一个自定义编写的日志记录类,它接受日志记录作为调试、信息和错误。要点:每次完成错误日志时添加一些自定义代码很容易。
问题:
当在 XCTest 期间记录错误时,我们希望将其发送到正在运行的 XCTest,以便 XCTest 可以将其视为失败。基本上这意味着我们需要一种方法将信息从被测应用发送回正在运行的 XCTest。
我们考虑过使用通知中心,但这并不适用,因为 XCTest 没有在应用程序的进程中运行。怎么可能做到这一点?
xcode - 在 xcode 服务器机器人上运行时,测试配置是否应该在测试结果中显示两次?
所以我为我的集成测试设置了一个 Xcode 服务器。
我正在使用测试计划并已设置我的机器人来运行特定计划。所以这可以按预期工作,很好。但是,该计划只有一个配置,但是当我在我的机器人上运行集成时,测试结果会两次列出“配置 1”。
我似乎找不到它被列出两次的原因,有没有人以前看过这个或者知道我错过了什么?
此外,当我的测试失败时,我注意到其中一个配置骗子是红色的,而另一个是绿色的,肯定有什么问题。
ios - Xcode 跨方案共享测试计划导致每个目标构建
我在我的 Xcode 项目中有一个简单的测试计划(具有单一配置),我正在切换到该项目,因为我的项目中有多个针对不同应用程序目标的方案,但测试是共享的(因为它们并不特别限于一个目标就相关性而言,尽管只有一个主机应用程序是可能的)。我现在想为所有目标制定一个测试计划,但是当我创建测试计划并将其添加到每个方案中,然后运行测试时,我可以清楚地看到每个目标都已构建。因此,对于我添加的每个目标,构建和运行测试所需的时间会逐渐增加。2019 年 WWDC 关于测试计划的视频清楚地表明它们可以在多个方案中共享,但仅此而已。
这是它应该表现的方式吗?或者有没有办法在方案之间共享测试计划,但只构建正在测试的活动目标?
编辑:注意,在本地以及在自动化 CI 中运行测试,因此需要一个适用于两者的解决方案。
由于测试计划,我实际上不确定它是否正在构建多个目标,因为只有少数目标显示在构建中(尽管可能是 Xcode 正在优化并跳过冗余构建,因为其他每个目标都很漂亮与正在建造的其中一个非常相似)。
xctest - Xcode 12.3:测试计划指定的 .xcappdata 未加载到模拟器中
我使用 Xcode 测试计划为我的应用程序设置了一个新的测试目标,以指定用于每个目标的 .xcappdata 文件。我们在 iPad 和 iOS 模拟器中运行测试,在每次测试运行之前从头开始重新创建。
但是,Xcode 从未真正将应用程序数据(例如 com.ourCompany.ourApp.plist 和其他文件)从 .xcappdata 文件复制到 .xcappdata 文件中的模拟器容器的适当目录中~/Library/Developer/CoreSimulator/Devices/SIMULATED_DEVICE_GUID/data/Containers/Data/Applications/OUR_APP'S_CONTAINER_GUID/
。
因此,我们的测试失败了,例如,生成了一个新的应用程序 .plist,而不是使用来自我们的 .xcappdata 的应用程序,导致 UserDefaults 设置值不符合预期。
难道我做错了什么?我们怎样才能让它真正起作用......?
我发现了多个其他线程,例如四年前在 Apple Dev Forums 上的这个线程,以及 Stack Overflow 上的几个线程,例如这篇文章,表明这个功能至少从 Xcode 6 开始就被破坏了。
但是...他们不是只是将每个目标的 .xcappdata 功能添加为 Xcode 11 中的测试计划的一部分吗?它怎么可能在 Xcode 12.3 中再次被破坏?Apple 不会围绕自己的测试计划功能进行测试吗?
我希望有人能启发我……这是权限问题吗?大苏尔的回归?我是否需要在/Applications/Xcode.app/Contents/Some/Deeply/Nested/Toolchain/usr/bin
Security & Privacy > Privacy > Full Disk Access 中添加一些神秘的可执行文件(隐藏在 中的无数子文件夹中)?
任何帮助将不胜感激......谢谢!
我确实找到了以下解决方法,但似乎都不是很有可扩展性:
HOME
在测试方案中将环境变量和CFFIXED_USER_HOME
环境变量设置为$(SRC_ROOT)/path/to/myData.xcappdata/AppData/
(这会导致该文件夹现在成为模拟应用程序的容器目录,从而导致这些文件因测试运行而被修改)作为它们的实际主目录而不是通常的容器位置! )- 使用脚本将嵌套在 .xcappdata 中的子文件夹中的文件复制到嵌套在其中的相同子文件夹中
~/Library/Developer/CoreSimulator/Devices/SOME-GUID/data/Containers/Data/Applications/ANOTHER-GUID/
(当然,由于这些 GUID 是随机的并且在测试时确定,如何编写这样的脚本并让它可靠地工作在 CI 机器 [使用 Fastlane 脚本执行测试] 和本地开发人员机器 [从 Xcode 中执行测试] 上,会很烦人)
xcode - 构建脚本如何知道 .xctestplan 将在构建时使用?
在 Xcode 12 中,如何在构建时知道将使用哪个 .xctestplan?
我有一个构建脚本,当用户按下 command-U(开始测试)时,该脚本需要根据当前在 Xcode 中选择的 xctestplan 采取特定操作。
如果计划 A 处于活动状态,则脚本应执行操作 A。如果选择计划 B,则脚本应执行操作 B。这需要在测试运行程序启动之前进行。
xcode - XCode TestPlan:从命令行指定要使用的配置
我的XCode项目的测试计划中有一些配置,默认情况下,执行UI测试会执行所有配置,但是对于某些需求我需要根据CI上的某些条件排除一两个,我发现我可以指定什么方案或要执行的测试计划,但是有没有办法从命令行指定要包含或排除的测试计划配置?谢谢!