2013-10-07 1 views
43

Я написал несколько модульных тестов в новом XCTest рамках Xcode 5.Xcode 5 говорит испытание не удалось, но показывает зеленые галочки

Тестов, кажется, успешно пройти большую часть времени, но я наткнулся на странное поведение, если, если я буду запускать тесты достаточно раз подряд, в конце концов я получу сообщение «тест не удалось», а консоль покажет Program ended with exit code 0, но есть зеленые галочки рядом со всеми тестами.

Что здесь не так?

+1

То же самое здесь, не могу понять, почему. –

+0

То же самое здесь. – huggie

+0

Похожие здесь. Для нас это иногда случается при первом запуске, а затем - после этого. Мы также думаем, что мы исправили это, добавив в наш код значительную «помощь», но это, конечно, неприемлемо. (Также трудно проверить, что это действительно сработало.) – 31eee384

ответ

17

Это определенно ошибка. Отправьте отчет через https://bugreport.apple.com/ со ссылкой на мой отчет (15251050).

+0

Идентификатор проблемы 15251050? Я не могу найти его. – huggie

+0

Я тоже не могу найти. – Shinigami

+0

Это был номер ссылки, который дал мне Apple. – squarefrog

2

Пока ошибка не будет исправлена, закройте проект и откройте его.

1

Если вы посмотрите на выходной консоли, вы должны заметить, что Xcode запускается тестовый набор:

Test Suite 'SomeClassTests' started at 2013-11-30 23:19:34 +0000 

но внезапно выходит без запуска тестовых случаев:

Program ended with exit code: 0 

и показывает уведомление, что тест не смогли.

Перезапуск Xcode помогает временно, так как проблема быстро возвращается.

Я прекратил выполнение тестов в Xcode и запускал все тесты по командной строке, используя xctool.

2

Build Clean работал для меня ... иногда в любом случае. Продукт -> Очистить.

1

Для меня, я думаю, эта проблема была связана с неправильной конфигурацией OCMock. Удаление OCMock (полностью) и повторное добавление его в проект точно как recommended by OCMock, похоже, исправил его.

Пару конкретных вещей, которые я сделал неправильно:

  1. Я использовал #import "OCMock.h вместо #import "OCMock/OCMock.h. Xcode автозаполнял первый.
  2. У меня была неудачная ссылка в пути поиска библиотеки, ранее пытавшейся установить OCMock с другой структурой каталогов.
  3. Это глупо, но, пытаясь отладить эту проблему, я прокомментировал экземпляр моего OCMockObject в моем методе настройки .. и не забыл раскомментировать его. Ниль OCMockObject вызвал подобное поведение, как описано в других ответах здесь. Это странно. В моем текущем проекте у меня есть два теста, в которых используется OCMockObject, созданный в моей настройке. Оба должны потерпеть неудачу. Однако один из них проходит, и единственное отличие, которое я вижу между ними, состоит в том, что тот, который проходит мимо, проходит законно ...

В любом случае, при правильной установке OCMock мои тесты работают так, как они должны

+0

Полезно знать для других, но у меня была эта проблема без OCMock. – 31eee384

0

Как только я столкнулся с этим в своем обновленном XCode 5, я решил поделиться своими аналогичными разрешениями.

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

Я также заметил, добавив USleep, как кто-то упомянул, а также выполнение чистой сборки до запуска тестов, похоже, решает проблему. Однако создание нового теста часто повторяет проблему, по крайней мере, для этого нового теста. Надежда Apple исправляет это в ближайшее время!

0

Это, как представляется, были зафиксированы в XCode 5.1.1

+0

Вот что они сказали, но я мог бы поклясться, что видел это недавно. Конечно, не так часто, как раньше. – Shinigami

+0

Все еще не работают для меня ... –

+0

Они утверждают, что это было, но ошибка остается, к сожалению. – Mike

0

Эта ошибка была исправлена ​​в Xcode 5.1:

Xcode 5.1 release notes

Примечания особо отметить:

Тест цель [название тест] возникла ошибка (тестовый процесс завершен с кодом -1)

Попытка восстановления, прекратив работу и перезагрузив симулятор. (15929053)

+0

Сообщалось, что он исправлен, но по-прежнему сохраняется после обновления для меня. – Mike

+0

Он работает отлично для меня после обновления. Попробуйте очистить проект и перезагрузить компьютер. – HackaZach

+0

Я делал это много раз за последнюю неделю - ничего до сих пор. – Mike

0

Несмотря на то, что я использую логические тесты, Xcode хочет, чтобы симулятор iPhone работал. Однажды в агонии, пытаясь снова запустить тесты, я сбросил содержимое симулятора iPhone и настройки из своего меню, и это помогло.

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