我一直试图弄清楚如何从命令行运行我们的单元测试,以便我们可以自动化它们。 我正在使用XCode 4.5.2,并构建一个IOS应用程序。
首先我尝试使用它:
xcodebuild -target "Unit Tests" -configuration "Debug (test syncserver)" -sdk iphonesimulator6.0 clean build TEST_AFTER_BUILD=YES
那将运行编译,但测试没有运行。 所以,在阅读了这里的其他解决方案之后,我安装了ios-sim并设置我的目标以后运行这个脚本: (注意我必须用“CODESIGNING_FOLDER_PATH”替换“TEST_HOST”的出现,因为我的构建中似乎不存在TEST_HOST。)
#!/bin/bash
if [ "$RUN_UNIT_TEST_WITH_IOS_SIM" = "YES" ]; then
test_bundle_path="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION"
echo ios-sim launch "$(dirname "$CODESIGNING_FOLDER_PATH")" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle="$test_bundle_path" --setenv XCInjectBundleInto="$CODESIGNING_FOLDER_PATH" --args -SenTest All "$test_bundle_path"
ios-sim launch "$(dirname "$CODESIGNING_FOLDER_PATH")" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle="$test_bundle_path" --setenv XCInjectBundleInto="$CODESIGNING_FOLDER_PATH" --args -SenTest All "$test_bundle_path"
echo "Finished running tests with ios-sim"
else
"${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
fi
现在,当我像以前一样运行相同的xcodebuild命令时,我得到了这个:
/ bin / sh -c “\”/ Users / johnlussmyer / tu / ondeck / OnDeck / build / OnDeck.build / Debug(test 同步服务器)-iphonesimulator /单位 Tests.build/Script-4CECE52812D5043F0063EC6A.sh \“”ios-sim发布 / Users / johnlussmyer / tu / ondeck / OnDeck / build / Debug(测试 syncserver)-iphonesimulator --setenv DYLD_INSERT_LIBRARIES = / .. / .. /库/ PrivateFrameworks / IDEBundleInjection.framework / IDEBundleInjection --setenv XCInjectBundle = / Users / johnlussmyer / tu / ondeck / OnDeck / build / Debug(test syncserver)-iphonesimulator / UnitTests.app --setenv XCInjectBundleInto = /用户/ johnlussmyer / TU / ondeck / OnDeck /建造/调试 (测试同步服务器)-iphonesimulator / UnitTests.app --args -SenTest All / Users / johnlussmyer / tu / ondeck / OnDeck / build / Debug(测试 syncserver)-iphonesimulator / UnitTests.app [DEBUG]会话不可能 已启动:错误域= DTiPhoneSimulatorErrorDomain代码= 1“未知 错误。“UserInfo = 0x7fcf04b03190 {NSLocalizedDescription =未知 错误。,DTiPhoneSimulatorUnderlyingErrorCodeKey = -1}完成运行 使用ios-sim进行测试
有关下一步尝试的建议吗?
答案 0 :(得分:3)
从日志中,您似乎有几个错误的设置。正确的语法是:
ios-sim launch YourApp.app
--setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection
--setenv XCInjectBundle=YourTest.octest
--setenv XCInjectBundleInto=YourApp.app/YourApp
--args -SenTest All YourTest.octest
你可以看到
如果你在环境变量中看不到TEST_HOST,你可能需要通过它们来找到一些正确的,以使你的bash脚本正确。
答案 1 :(得分:0)
一个古老的问题..但是我在这里遇到了类似的问题。
我为OSX / iOS支付了2美分(在iOS13 / Catalina / Xcode 11下测试)。 (希望它可以对某人有所帮助。)
func underXCTest()->Bool{
let environment = ProcessInfo.processInfo.environment
if let _ = environment["XCInjectBundleInto"]{
return true
}
return false
}
在测试中返回false。