2011-01-12 3 views
15

У меня возникли проблемы с моим набором тестов OCUnit при запуске тестов приложений (т. Е. На устройстве). Иногда я получаю сложную ошибку, которая, кажется, выбрасывается из классов OCUnit. Я пытался просмотреть файлы, добавленные в тестовые комплекты, но не могу обернуться вокруг него.Периодические ошибки при запуске набора тестов приложений OCUnit на устройстве

Я следовал документации Apple, и посмотрел на других учебниках при настройке своих тестовых целей, в результате выполнения следующих задач (и отступ зависимостей):

LogicTests

MYAPP LogicTests

ApplicationTests MYAPP

MyAppTesting ApplicationTests

Последний (MyAppTesting) - это тот, который я запускаю на устройстве, чтобы запустить набор тестов.

И, как упоминалось выше, тесты не начать иногда бросать мне следующий вывод в консоли:

2010-11-17 12:02:48.537 VCCTesting[12018:307] *** Assertion failure in -[SenTestClassEnumerator init], /SourceCache/OCUnit/OCUnit-1685/SourceCode/SenTestingKit/SenTestClassEnumerator.m:137 

2010-11-17 12:02:48.556 VCCTesting[12018:307] *** Terminating app due to uncaught exception 'NSInternalInconsistencyException', reason: 'objc_getClassList returned more classes than it should have.' 
*** Call stack at first throw: 
(
0 CoreFoundation      0x30897ed3 __exceptionPreprocess + 114 
1 libobjc.A.dylib      0x3002f811 objc_exception_throw + 24 
2 CoreFoundation      0x30897d15 +[NSException raise:format:arguments:] + 68 
3 Foundation       0x349f932f -[NSAssertionHandler handleFailureInMethod:object:file:lineNumber:description:] + 62 
4 SenTestingKit      0x20107c29 -[SenTestClassEnumerator init] + 292 
5 SenTestingKit      0x201079fd +[SenTestClassEnumerator classEnumerator] + 24 
6 SenTestingKit      0x2010777d +[NSObject(SenTestRuntimeUtilities) senAllSubclasses] + 92 
7 SenTestingKit      0x201067b5 +[SenTestSuite updateCache] + 28 
8 SenTestingKit      0x20106753 +[SenTestSuite suiteForBundleCache] + 54 
9 SenTestingKit      0x201065db +[SenTestSuite structuredTests] + 14 
10 SenTestingKit      0x201065a1 +[SenTestSuite allTests] + 40 
11 SenTestingKit      0x20106573 +[SenTestSuite defaultTestSuite] + 14 
12 SenTestingKit      0x201057a3 +[SenTestProbe specifiedTestSuite] + 106 
13 SenTestingKit      0x20105d83 +[SenTestProbe runTests:] + 94 
14 Foundation       0x349c7e8d __NSFireDelayedPerform + 368 
15 CoreFoundation      0x3084e7fb __CFRUNLOOP_IS_CALLING_OUT_TO_A_TIMER_CALLBACK_FUNCTION__ + 14 
16 CoreFoundation      0x3084e2ad __CFRunLoopDoTimer + 860 
17 CoreFoundation      0x3081f7a5 __CFRunLoopRun + 1088 
18 CoreFoundation      0x3081f277 CFRunLoopRunSpecific + 230 
19 CoreFoundation      0x3081f17f CFRunLoopRunInMode + 58 
20 GraphicsServices     0x31e445f3 GSEventRunModal + 114 
21 GraphicsServices     0x31e4469f GSEventRun + 62 
22 UIKit        0x31e51123 -[UIApplication _run] + 402 
23 UIKit        0x31e4f12f UIApplicationMain + 670 
24 VCCTesting       0x000234ff main + 70 
25 VCCTesting       0x00002538 start + 40 
) 
terminate called after throwing an instance of 'NSException' 

Кто-нибудь знает, что может быть не так?

Благодарен за любую помощь, Kristofer

P.S. Я разместил это на форумах приложений dev, но мне еще не повезло: https://devforums.apple.com/message/333890

+0

Просто нажмите это как-то .. для меня чистая, а затем повторная попытка. – canhazbits

ответ

19

ли вы NSZombieEnabled? Я имел этот вопрос когда я установил NSZombieEnabled в YES в своих аргументах для моего целевого запуска запуска устройства. Я пробовал все (очистка/выключение XCode/res tint). Единственным решением на данный момент было отключить зомби во время моего тестового запуска.

+0

Отключение NSZombieEnabled помогло мне! Спасибо, alex! –

+0

Да, это сработало для меня тоже – Antoni

+0

Работал для меня тоже. –

0

Я думаю, что я только что понял, почему я тоже получал эту ошибку - возможно, это то же самое происходит с вами:

У меня есть два продукта, один для внутреннего бета-тестирования (в комплекте с панелью предпочтений) и один для выпуска магазина приложений. Обе цели продукта были настроены с тем же именем продукта (PRODUCT_NAME в настройках сборки).

Это отлично работало в XCode 3.x, но XCode 4 как-то пытался создать продукт магазина каждый раз, когда я создал бета-продукт. Я думаю, что это связано с изменением того, где XCode помещает свои производные файлы. XCode 4 хранил бета-версию и хранилища на том же пути, поэтому, когда бета-продукт был создан, выходной файл магазина изменился и его необходимо было перестроить. ..

... во всяком случае изменения бета Название продукта закрепил временно скрепляются вопрос ... Я также изменил идентификатор пакета в Info.plist так два продукта имеют разные идентификаторы. Теперь, когда я создаю один продукт, другой не получается построить одновременно, но я все равно получаю сбой при выполнении тестов :-(

Моя единственная идея - полностью воссоздать проект из свежих, копирующих через настройки и файлы, чтобы увидеть, если XCode 4 делает что-то другое. That и подав поддержки инцидент с Apple, ...

Приветствия,

Адам

+0

Спасибо за ответ, Адам! К сожалению, это не решило мою проблему. Цели имеют разные названия продуктов ... Кроме того, у меня были те же проблемы, что и XCode 3.2.4, поэтому я не думаю, что это связано с выпуском XCode 4. :( –

+2

Увы, я говорил слишком рано - я все еще получаю сообщение об ошибке. Иногда он уходит после того, как я очищаю обе цели отдельно, а затем создаю и запускаю модульные тесты с нуля, но иногда это не так ... Я 'm подает инцидент с поддержкой Apple, поэтому мы увидим, что это делает! – adamcohenrose

+1

Hah! Подал инцидент с поддержкой, но ему сказали поднять ошибку ... Я сделаю это, когда наступит момент. чистка всех целей часто означает, что я могу запустить цель, которую я хочу, без сбоев тестов. – adamcohenrose

0

Я не уверен на 100%, но, похоже, эта проблема может быть решена путем создания различной схемы для каждой тестовой цели. У меня была эта ошибка много сегодня днем, но это не произошло некоторое время после того, как я создал отдельные схемы для разных тестовых целей.

0

Только для тех, кто может столкнуться с этой проблемой, как я:

KIFTester загружен
отказ Assertion в - [SenTestClassEnumerator INIT], /SourceCache/OCUnit/OCUnit-5315/SourceCode/SenTestingKit/SenTestClassEnumerator.m : 136
Завершение приложения из-за неперехваченного исключения «NSInternalInconsistencyException», причина: «objc_getClassList возвратил больше классов, чем должен был».

Проблема оказалась GoogleAnalytics 3,0 обновлен до 3.0.3, но все та же проблема с одной из этих библиотек libGoogleAnalytics_debug.a libGoogleAnalyticsServices.a

Чтобы обойти это я просто не включают их для тестирования.

Смежные вопросы