36

コマンドラインから単体テストを実行するときにXcode4.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'

テストは合格して完了したと書いてありますが、実際に実行されたとは思いません。

次のコマンドを使用してテストを実行しています。

xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Debug clean build TEST_AFTER_BUILD=YES

誰かが同じ問題に遭遇し、解決策を提供できますか?

4

4 に答える 4

29

この問題の解決のために私がしたことも共有する必要があると思っただけです。https://stackoverflow.com/a/10823483/666943で概説されている解決策に従いましたが、rubyスクリプトをシェルに変換しました。最後に、基本的に自作でインストールし、テストターゲットのを次のように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_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
于 2012-10-01T23:40:17.420 に答える
9

Xcode 4.5 / iOS 6のベータ版でこの問題に気づきました。この問題を回避するために、スタンドアロンの単体テストランナーに取り組んでいます。これは、単体テストバンドルをコンパイルしてから、シミュレーター環境で単体テストを自動的に実行するバージョンのアプリをコンパイルすることで機能します。

ツールは決して完全ではありませんが、十分な数の人々がこの問題を抱えているようで、私は今のところツールをリリースしています。ツールを改善できるように、フォークまたはコメントしてください。

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

また、この問題についてもこのレーダーに注目してくださいhttp://openradar.appspot.com/12306879

于 2012-09-28T10:15:53.197 に答える
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

于 2012-09-29T19:37:13.793 に答える
2

また、iOS6.0シミュレーターSDKでコマンドラインテストを実行するのに役立つハックはほとんどありません。

私はCedarを使用していますが、この調整は私を助けてくれました:

まず、メインファイルを少し 更新する必要があります。

  // Faking up that workspace port
  CFMessagePortCreateLocal(NULL, (CFStringRef) @"PurpleWorkspacePort", NULL, NULL,NULL);
  return UIApplicationMain(argc, argv, nil, @"CedarApplicationDelegate");

次に、UIWindowにカテゴリを追加する必要があります。

@implementation UIWindow (Private)
- (void)_createContext {
   // Doing nothing here. Just for crash avoidance
}
@end

Cedar Unittestは正常に実行され、実行時に警告が表示されますが、少なくとも実行できるようになります:)

于 2013-01-18T09:27:32.177 に答える