2013-02-19 51 views
2

我一直在试图找出如何在命令行中运行单元测试运行在命令行IOS单元测试,这样我们就可以自动执行它们。 我正在使用XCode 4.5.2,并构建一个IOS应用程序。如何在Xcode的4.5

首先,我尝试使用这样的:

xcodebuild -target "Unit Tests" -configuration "Debug (test syncserver)" -sdk iphonesimulator6.0 clean build TEST_AFTER_BUILD=YES 

这将运行编译,但测试没有运行。 因此,围绕阅读其他的解决方案在这里后,我安装了IOS-SIM卡,并设置我的目标之后运行此脚本: (请注意,我不得不更换“TEST_HOST”与“CODESIGNING_FOLDER_PATH”为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 “\”/用户/ johnlussmyer/TU /ondeck/OnDeck/build/OnDeck.build/Debug(测试 同步服务器)-iphonesimulator /单位 Tests.buil d/Script-4CECE52812D5043F0063EC6A.sh \“”ios-sim launch /Users/johnlussmyer/tu/ondeck/OnDeck/build/Debug(test syncserver)-iphonesimulator --setenv DYLD_INSERT_LIBRARIES =/../../Library /PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle = /用户/ johnlussmyer/TU/ondeck/OnDeck /建造/调试(测试 同步服务器)-iphonesimulator/UnitTests.app --setenv XCInjectBundleInto = /用户/ johnlussmyer/tu/ondeck/OnDeck/build/Debug (test syncserver)-iphonesimulator/UnitTests.app --args -SenTest全部 /Users/johnlussmyer/tu/ondeck/OnDeck/build/Debug(测试 同步服务器)-iphonesimulator/UnitTests .app [DEBUG]会话不可能是 开始:错误域= DTiPhoneSimulato rErrorDomain代码= 1“未知 错误。”的UserInfo = {0x7fcf04b03190 = NSLocalizedDescription未知 错误,DTiPhoneSimulatorUnderlyingErrorCodeKey = -1}运行完毕 测试与IOS-SIM什么尝试下一个

有什么建议?

回答

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 

你可以看到

  1. 应用程序路径是启动命令后不正确
  2. XCInjectBundle应该是你octest,而不是应用程序
  3. XCInjectBundleInto应该是你的应用程序二进制路径,而不是app文件夹
  4. 最后的参数也应该是你octest

如果你不能看到TEST_HOST在环境变量中,你可能希望通过他们去找到一些propers那些使你的bash脚本正确。