xcodebuild 在使用 test-without-building 时忽略 testPlan

问题描述 投票:0回答:4

考虑这个示例项目:https://github.com/stremsdoerfer/TestPlan。这只是一个 Hello World,它有两个测试计划:

TestPlanUnit
仅运行单元测试和
TestPlanUI
仅运行 UI 测试。

使用 Xcode 14.3 运行下面的命令,我希望运行

TestPlanUI
,但实际上只运行
TestPlanUnit
,这是默认值。

xcodebuild -scheme TestPlan -destination 'platform=iOS Simulator,id=<sim_id>' -testPlan TestPlanUI test-without-building

它在 Xcode 14.2 上运行良好。 使用

test
代替
test-without-building
也可以正常工作。

有什么想法吗?

ios xcode xcodebuild xcode14.3
4个回答
3
投票

遇到同样的问题并向 Apple 报告了问题。当传递

testPlan
时,
test-without-building
参数似乎被忽略。


3
投票

我还向苹果报告了

testPlan ignored when using xcodebuild test-without-building
。 苹果回应:
Potential fix identified - For a future OS update


2
投票

这不是一个解决方案,而是一个潜在的解决方法,直到苹果修复它。如果您复制了您的Scheme,然后将该Scheme的默认测试计划设置为您想要运行的测试,则test-without-building将关注Scheme中的默认测试。

我已经使用

fastlane
进行了测试,并直接使用
xcodebuild
进行了测试,两者都是这样工作的。我不喜欢它,特别是因为我的计划相当复杂。然而,我确实成功地运行了我的测试。

确保您的运行变体均已构建。我遇到了一个问题,我不久前复制了我的方案,并且一个方案因单个测试计划的 Runtime SanitizationRun / Diagnostics 设置而出现分歧。因此,当我在 CI 中运行测试并关闭清理功能时,该方案需要在

Variant-NoSanitizers
中有一个二进制文件。


1
投票

实际上我得到了一个不需要任何黑客攻击的可行解决方案🔥

第一次调用

xcodebuild
将创建一个
xctestrun
文件:

xcrun xcodebuild build-for-testing -workspace <project_root>/<project_name>.xcworkspace -scheme <scheme> -destination 'platform=iOS Simulator,id=2253C0D7-C198-44AD-A98B-11301FD88F30'

此文件将位于 DerivedData 文件夹中,并命名如下:

~/Library/Developer/Xcode/DerivedData/<build_folder>/Build/Products/<scheme>_<test_plan_name>_<device_type><ios-version>-<architecture>.xctestrun

一个例子是

MyScheme_Screenshots_iphonesimulator16.4-arm64.xctestrun

第二次调用

xcodebuild
然后使用此文件来运行测试。使用
[-project, -scheme, -workspace]
时不允许指定任何
-xctestrun
:

xcrun xcodebuild test-without-building -destination 'platform=iOS Simulator,id=2253C0D7-C198-44AD-A98B-11301FD88F30' -xctestrun ~/Library/Developer/Xcode/DerivedData/<build_folder>/Build/Products/<scheme>_<test_plan_name>_<device_type><ios-version>-<architecture>.xctestrun

希望对大家有帮助👍

PS: 在这里您可以找到集成此修复程序的命令行工具 Snap

Pull Request
。 Snap 使用 Xcode TestPlans 创建屏幕截图。对于 CI 超级有用🔥

© www.soinside.com 2019 - 2024. All rights reserved.