Xcode 4.5 Testowanie jednostek wiersza poleceń
Problem z aktualizacją do Xcode 4.5 podczas uruchamiania testów jednostkowych za pomocą wiersza poleceń. Poniżej znajduje się wynik, który widzę, gdy próbuję uruchomić moje testy
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'
Mimo, że mówi, że testy przeszły i zakończyły się, nie sądzę, aby zostały przeprowadzone.
Do uruchomienia testów używam następującego polecenia xcodebuild-workspace MyApp.xcworkspace-scheme MyAppTests-sdk iphonesimulator-configuration debug clean build TEST_AFTER_BUILD=YES
Czy ktoś napotkał ten sam problem i może zaproponować rozwiązanie?
4 answers
Pomyślałem, że powinienem również podzielić się tym, co zrobiłem, aby rozwiązać ten problem. Zastosowałem rozwiązanie opisane w https://stackoverflow.com/a/10823483/666943 ale przekonwertował skrypt ruby do powłoki. Na koniec zainstalowałem ios-sim
przez homebrew i zamieniłem Run Script
w Build Phases
mojego testowego celu na:
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
Aby rozpocząć test teraz zdaję w argumencie RUN_UNIT_TEST_WITH_IOS_SIM=YES
np.
xcodebuild -workspace MyApp.xcworkspace -scheme MyAppTests -sdk iphonesimulator -configuration Debug clean build RUN_UNIT_TEST_WITH_IOS_SIM=YES
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2017-05-23 12:22:58
Zauważyłem ten problem w wersji beta Xcode 4.5 / iOS 6. Pracowałem nad samodzielnym biegaczem testów jednostkowych, aby obejść ten problem. Działa to poprzez kompilację pakietu testów jednostkowych, a następnie kompilację wersji aplikacji, która automatycznie uruchamia testy jednostkowe w środowisku symulatora.
Narzędzie bynajmniej nie jest kompletne, ale wydaje się, że wystarczająco dużo osób ma ten problem, że wypuszczam narzędzie tak, jak jest na razie. Proszę widelec lub komentarz, więc mogę poprawić narzędzie.
Xcodetest: https://github.com/sgleadow/xcodetest
Również miej oko na ten radar w sprawie http://openradar.appspot.com/12306879
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-28 10:15:53
xcodebuild -project ${PROJECT_PATH}/${PROJECT_NAME}.xcodeproj \
-scheme ${TEST_SCHEME} \
-configuration Debug \
-sdk iphonesimulator5.1 \
clean build \
TEST_AFTER_BUILD=YES
Ustawienie iphonesimulatora na wersję 5.1 wydaje się rozwiązywać problem. W tej kwestii są wypełnione błędy radarowe.
Ten artykuł również wspomnieć dobre rozwiązanie do naśladowania:
Http://baolei.tumblr.com/post/32428168156/ios-unit-test-from-command-line-ios6-xcode4-5
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2012-09-29 20:36:49
Jest też mały hack, który może pomóc w uruchomieniu testów wiersza poleceń na iOS6.0 simulator SDK
Używam cedru i ten tweak mi pomógł:
Najpierw musisz trochę zaktualizować swój main Plik:
// Faking up that workspace port
CFMessagePortCreateLocal(NULL, (CFStringRef) @"PurpleWorkspacePort", NULL, NULL,NULL);
return UIApplicationMain(argc, argv, nil, @"CedarApplicationDelegate");
Po drugie, musisz dodać kategorię do UIWindow:
@implementation UIWindow (Private)
- (void)_createContext {
// Doing nothing here. Just for crash avoidance
}
@end
Cedar Unittest będzie działać dobrze, z pewnymi ostrzeżeniami runtime, ale przynajmniej będą mogły działać:)
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/doraprojects.net/template/agent.layouts/content.php on line 54
2013-01-18 09:27:32