问题标签 [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.

0 投票
2 回答
563 浏览

ios - Xcode 11 XCTestPlan 无法导出截图

在 Xcode 11 中,我创建了一个用于导出本地化屏幕截图的 xctestplan,但我无法选择“包含屏幕截图”选项。像这张图片一样,警告消息是“本地化问题的屏幕截图”。

在此处输入图像描述

如果我查看 UI 测试的报告,那么我可以看到截图文件在那里,我可以保存它们。

在此处输入图像描述

如果我导出它,在“ Notes ”文件夹中没有截图,有什么帮助吗?

在 xctestplan 的配置中,我设置了 Automatic Screenshots-> On, and keep all, Localization Screenshots->On

0 投票
1 回答
726 浏览

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

0 投票
1 回答
70 浏览

xctest - XCTest 将信息从应用程序(被测)发送回 XCTests

情况:

考虑一个正在使用 xcode/XCTests 测试的 ios/swift/app。该应用程序还包括一些日志记录到控制台(以及Google/Firebase/Crashlytics作为非致命异常:效果很好!)。

为此,正在使用一个自定义编写的日志记录类,它接受日志记录作为调试、信息和错误。要点:每次完成错误日志时添加一些自定义代码很容易。

问题:

当在 XCTest 期间记录错误时,我们希望将其发送到正在运行的 XCTest,以便 XCTest 可以将其视为失败。基本上这意味着我们需要一种方法将信息从被测应用发送回正在运行的 XCTest。

我们考虑过使用通知中心,但这并不适用,因为 XCTest 没有在应用程序的进程中运行。怎么可能做到这一点?

0 投票
0 回答
326 浏览

ios - Xcode 11 测试计划似乎没有本地化模拟器状态栏

我使用 Xcode 11 测试计划新功能为应用商店生成本地化屏幕截图。正如 WWDC19 中所解释的,您可以使用测试计划配置来播放您的 UI 测试,生成多种语言的屏幕截图。

不幸的是,它似乎只指定了应用程序的语言和地区,而不是基于模拟器的。

例如,当您使用此配置时:

法式配置

当状态栏显示日期时,问题尤其出现在 iPad 上:

带有法语应用程序和英语状态栏的 iPad

因此,如果有人知道如何强制模拟器为每个配置更新其语言,我将不胜感激。

PS:我曾经使用过,fastlane/snapshot但测试计划效率更高(生成 5 分钟而不是 40 多分钟),所以如果我可以这样做 fastlane,我宁愿不回去。fastlane

0 投票
0 回答
76 浏览

xcode - 在 xcode 服务器机器人上运行时,测试配置是否应该在测试结果中显示两次?

所以我为我的集成测试设置了一个 Xcode 服务器。

我正在使用测试计划并已设置我的机器人来运行特定计划。所以这可以按预期工作,很好。但是,该计划只有一个配置,但是当我在我的机器人上运行集成时,测试结果会两次列出“配置 1”。

我似乎找不到它被列出两次的原因,有没有人以前看过这个或者知道我错过了什么?

此外,当我的测试失败时,我注意到其中一个配置骗子是红色的,而另一个是绿色的,肯定有什么问题。

0 投票
1 回答
571 浏览

ios - Xcode 跨方案共享测试计划导致每个目标构建

我在我的 Xcode 项目中有一个简单的测试计划(具有单一配置),我正在切换到该项目,因为我的项目中有多个针对不同应用程序目标的方案,但测试是共享的(因为它们并不特别限于一个目标就相关性而言,尽管只有一个主机应用程序是可能的)。我现在想为所有目标制定一个测试计划,但是当我创建测试计划并将其添加到每个方案中,然后运行测试时,我可以清楚地看到每个目标都已构建。因此,对于我添加的每个目标,构建和运行测试所需的时间会逐渐增加。2019 年 WWDC 关于测试计划的视频清楚地表明它们可以在多个方案中共享,但仅此而已。

这是它应该表现的方式吗?或者有没有办法在方案之间共享测试计划,但只构建正在测试的活动目标?

编辑:注意,在本地以及在自动化 CI 中运行测试,因此需要一个适用于两者的解决方案。

由于测试计划,我实际上不确定它是否正在构建多个目标,因为只有少数目标显示在构建中(尽管可能是 Xcode 正在优化并跳过冗余构建,因为其他每个目标都很漂亮与正在建造的其中一个非常相似)。

0 投票
4 回答
10344 浏览

xcode - XCode 单元测试 - 在范围内找不到视图控制器

在我的应用程序开发的某个时刻,我的单元测试和 UI 测试无法访问我的应用程序的主模块:

在范围内找不到类型“FileVacuumViewController”

在范围内找不到类型“FileVacuumViewController”

他们之前使用过 xctestplan。我不知道它发生在什么时候。我尝试不导入@testable,包括tests.swift在主模块的“目标成员资格”中。

也许我需要打开工作区而不是 xcproject?当我尝试打开工作区时,出现错误消息,并且树中没有文件显示: 在此处输入图像描述


这是我的 xctestplan 配置:

xctestplan 配置

当我单击单独运行一个 UI 测试时,其中大约 20 个代码签名对话框显示:

代码符号弹出窗口

0 投票
0 回答
113 浏览

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/binSecurity & 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 中执行测试] 上,会很烦人)
0 投票
0 回答
83 浏览

xcode - 构建脚本如何知道 .xctestplan 将在构建时使用?

在 Xcode 12 中,如何在构建时知道将使用哪个 .xctestplan?

我有一个构建脚本,当用户按下 command-U(开始测试)时,该脚本需要根据当前在 Xcode 中选择的 xctestplan 采取特定操作。

如果计划 A 处于活动状态,则脚本应执行操作 A。如果选择计划 B,则脚本应执行操作 B。这需要在测试运行程序启动之前进行。

0 投票
1 回答
30 浏览

xcode - XCode TestPlan:从命令行指定要使用的配置

我的XCode项目的测试计划中有一些配置,默认情况下,执行UI测试会执行所有配置,但是对于某些需求我需要根据CI上的某些条件排除一两个,我发现我可以指定什么方案或要执行的测试计划,但是有没有办法从命令行指定要包含或排除的测试计划配置?谢谢!