xctool 构建失败:在“Debug-iphonesimulator”下找不到测试包
xctool build failure: Test bundle not found under `Debug-iphonesimulator`
我在 运行 xctool 构建时遇到故障。我的命令如下:
xctool clean build run-tests -only 'MyApp KIF Tests' -workspace MyApp.xcworkspace/ -scheme 'Debug' -destination "platform=iOS Simulator,name=iPhone 6,OS=latest" -sdk iphonesimulator -reporter junit -reporter plain
构建失败并出现以下错误:
Failed to query the list of test cases in the test bundle: Test bundle not found at: /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-blbvnisblktossbxwcmnxafkngts/Build/Products/Debug-iphonesimulator/MyApp KIF Tests.xctest
我在报错信息指定的路径中查找了MyApp KIF Tests.xctest
,确实找不到那个文件。但是,此文件确实存在于不同的路径下:
/Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-blbvnisblktossbxwcmnxafkngts/Build/Products/Debug-iphoneos/MyApp KIF Tests.xctest
这两条路径唯一的区别是一条在Debug-iphonesimulator
之下,一条在Debug-iphoneos
之下。
我还注意到在 target -> Build Settings -> Build Locations -> Per-configuration Build Products Path -> Debug 下,值为 $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
,评估为 build/OktaVerify.build/Debug-iphoneos
。所以第一个问题是:为什么$(EFFECTIVE_PLATFORM_NAME)
求值为Debug-iphoneos
?我需要更改什么配置以使其评估为 Debug-iphonesimulator
以便 xctool 可以找到它?
接下来,我将 $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
的值硬编码为 Debug-iphonesimulator
,希望看到它起作用。但是,我得到了同样的错误。我的第二个问题是,为什么 xctest 文件出现在 Debug-iphoneos
文件夹下,即使构建产品路径指定 Debug-iphonesimulator
?什么设置指定 Debug-iphoneos
?
环境是 Xcode 7.2 和 xctool 版本 0.2.8。
我通过从 xctool 命令中删除“-sdk iphonesimulator”解决了这个问题。这样它会根据目标类型自动选择合适的 sdk。
我在 运行 xctool 构建时遇到故障。我的命令如下:
xctool clean build run-tests -only 'MyApp KIF Tests' -workspace MyApp.xcworkspace/ -scheme 'Debug' -destination "platform=iOS Simulator,name=iPhone 6,OS=latest" -sdk iphonesimulator -reporter junit -reporter plain
构建失败并出现以下错误:
Failed to query the list of test cases in the test bundle: Test bundle not found at: /Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-blbvnisblktossbxwcmnxafkngts/Build/Products/Debug-iphonesimulator/MyApp KIF Tests.xctest
我在报错信息指定的路径中查找了MyApp KIF Tests.xctest
,确实找不到那个文件。但是,此文件确实存在于不同的路径下:
/Users/myusername/Library/Developer/Xcode/DerivedData/MyApp-blbvnisblktossbxwcmnxafkngts/Build/Products/Debug-iphoneos/MyApp KIF Tests.xctest
这两条路径唯一的区别是一条在Debug-iphonesimulator
之下,一条在Debug-iphoneos
之下。
我还注意到在 target -> Build Settings -> Build Locations -> Per-configuration Build Products Path -> Debug 下,值为 $(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
,评估为 build/OktaVerify.build/Debug-iphoneos
。所以第一个问题是:为什么$(EFFECTIVE_PLATFORM_NAME)
求值为Debug-iphoneos
?我需要更改什么配置以使其评估为 Debug-iphonesimulator
以便 xctool 可以找到它?
接下来,我将 $(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)
的值硬编码为 Debug-iphonesimulator
,希望看到它起作用。但是,我得到了同样的错误。我的第二个问题是,为什么 xctest 文件出现在 Debug-iphoneos
文件夹下,即使构建产品路径指定 Debug-iphonesimulator
?什么设置指定 Debug-iphoneos
?
环境是 Xcode 7.2 和 xctool 版本 0.2.8。
我通过从 xctool 命令中删除“-sdk iphonesimulator”解决了这个问题。这样它会根据目标类型自动选择合适的 sdk。