Xcode 4.5命令行单元测试

Edw*_*ynh 36 unit-testing xcodebuild ios6 xcode4.5

在通过命令行运行我的单元测试时更新到Xcode 4.5后出现问题.以下是我尝试运行测试时看到的输出

Unknown Device Type. Using UIUserInterfaceIdiomPad based on screen size
Terminating since there is no workspace.
/Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include:334: note: Passed tests for architecture 'i386' (GC OFF)

/Applications/Xcode.app/Contents/Developer/Tools/RunPlatformUnitTests.include:345: note: Completed tests for architectures 'i386'
Run Code Online (Sandbox Code Playgroud)

虽然它确实说测试已经通过并完成,但我认为它们实际上并没有被运行.

我正在使用以下命令来运行测试xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Debug clean build TEST_AFTER_BUILD = YES

有没有人遇到同样的问题,可以提供解决方案?

Edw*_*ynh 29

我想我也应该分享我为解决这个问题所做的工作.我按照/sf/answers/757643841/中概述的解决方案,但将ruby脚本转换为shell.最后我基本安装ios-sim通过自制软件,更换Run ScriptBuild Phases我用下面的测试目标:

if [ "$RUN_UNIT_TEST_WITH_IOS_SIM" = "YES" ]; then
    test_bundle_path="$BUILT_PRODUCTS_DIR/$PRODUCT_NAME.$WRAPPER_EXTENSION"
    ios-sim launch "$(dirname "$TEST_HOST")" --setenv DYLD_INSERT_LIBRARIES=/../../Library/PrivateFrameworks/IDEBundleInjection.framework/IDEBundleInjection --setenv XCInjectBundle="$test_bundle_path" --setenv XCInjectBundleInto="$TEST_HOST" --args -SenTest All "$test_bundle_path"
    echo "Finished running tests with ios-sim"
else
    "${SYSTEM_DEVELOPER_DIR}/Tools/RunUnitTests"
fi
Run Code Online (Sandbox Code Playgroud)

现在开始测试我传递参数RUN_UNIT_TEST_WITH_IOS_SIM=YES例如

xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Debug clean build RUN_UNIT_TEST_WITH_IOS_SIM=YES
Run Code Online (Sandbox Code Playgroud)

  • 我总是得到以下错误:"[DEBUG]会话无法启动:错误域= DTiPhoneSimulatorErrorDomain代码= 2"模拟器会话超时.UserInfo = 0x7fd323c2a4a0 {NSLocalizedDescription =模拟器会话超时.} (3认同)
  • 与詹金斯再次出现上述错误:-( (3认同)

Ste*_*tew 9

我在Xcode 4.5/iOS 6的测试版中注意到了这个问题.我一直在研究一个独立的单元测试运行器来解决这个问题.它的工作原理是编译单元测试包,然后编译一个在模拟器环境中自动运行单元测试的应用程序版本.

该工具绝不是完整的,但是有足够的人似乎有这个问题,我现在正在发布这个工具.请分叉或评论,以便我可以改进工具.

xcodetest:https://github.com/sgleadow/xcodetest

在问题http://openradar.appspot.com/12306879上也要关注这个雷达


Vic*_*ima 6

xcodebuild -project ${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj \ -scheme ${TEST_SCHEME} \ -configuration Debug \ -sdk iphonesimulator5.1 \ clean build \ TEST_AFTER_BUILD=YES

将iphonesimulator设置为5.1版似乎解决了这个问题.这个问题上有雷达漏洞.

本文还提到了一个很好的解决方案:

http://baolei.tumblr.com/post/32428168156/ios-unit-test-from-command-line-ios6-xcode4-5