Подтвердить что ты не робот

Xcode 5 говорит, что тесты не пройдены, но отображаются зеленые галочки

Я написал несколько модульных тестов в новой инфраструктуре XCTest Xcode 5.

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

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

4b9b3361

Ответ 1

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

Ответ 2

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

Ответ 3

Build Clean работал у меня... иногда в любом случае. Продукт → Чистота.

Ответ 4

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

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

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

Program ended with exit code: 0

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

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

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

Ответ 5

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

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

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

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

Ответ 6

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

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

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

Ответ 7

Это, по-видимому, исправлено в XCode 5.1.1

Ответ 8

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

Примечания к выпуску Xcode 5.1

Заметки особо указывают:

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

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

Ответ 9

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