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

Тесты Xcode 7 не запускаются, но отчеты успешно

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

У меня есть только одна тестовая цель и один класс:

@implementation Tests

- (void)setUp {
    [super setUp];
    // Put setup code here. This method is called before the invocation of each test method in the class.
}

- (void)tearDown {
    // Put teardown code here. This method is called after the invocation of each test method in the class.
    [super tearDown];
}

- (void)testExample {
    // This is an example of a functional test case.
    // Use XCTAssert and related functions to verify your tests produce the correct results.
    XCTAssert(false, "");
}

- (void)testPerformanceExample {
    XCTAssert(false, "");
}

@end

Тест должен завершиться неудачно, но он отображает всплывающее сообщение о успехе. Кроме того, в отчете об испытаниях нет тестов.

Если я пытаюсь выполнить тесты индивидуально, тесты "преуспевают", но я не получаю никакой информации о отчете, и квадрат остается пустым.

Любые идеи о том, как его исправить?

4b9b3361

Ответ 1

Обновление Xcode стало доступным, и я обновил его, решив проблему.

Если у вас тоже есть эта проблема, проверьте ответ Мартина Ван Бурена, он не помог мне в этом деле, но стоит сделать снимок.

Ответ 2

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

Ответ 3

Если вы создаете для iOS, обычно у вас есть Xcode для запуска на физическом устройстве? Если да, попробуйте настроить его для запуска на iOS-симуляторе.

Я обнаружил, что если у вас установлен Xcode 7 на физическом устройстве, тестирование устройства будет вести себя так, как вы описали. Установка Xcode для запуска на iOS-симуляторе временно для модульного тестирования исправила проблему прямо, и теперь она работает как шарм.

Надеюсь, это поможет любому, кто сталкивается с той же проблемой.: D

Ответ 4

Стоит упомянуть всех, кто придерживался этого в будущем: Xcode запускает только функции XCTestCase, которые начинаются с "теста". Это противоречит другим платформам и смутило меня, когда я начал тестировать в iOS.

В следующем классе:

class MyBigTest: XCTestCase {

    func testSensibleInputReturnSensibleAnswer() {
        XCTAssert(/* stuff */)
    }

    func someOtherTest() {
        XCTAssert(/* some other stuff */)
    }
}

Выполняется только testSensibleInputReturnSensibleAnswer().

Ответ 5

Выключите устройство iOS, а затем снова включите питание. Вы также можете удалить USB-кабель и снова подключиться, чтобы Xcode мог восстановить связь с устройством. Когда это случится со мной, тест будет сообщать, что тест сразу же завершился без испытания. Я также заметил, что когда я пытался записать новое тестовое действие UI, которое Xcode разбивалось каждый раз - похоже на то, как он себя вел, прежде чем я впервые включил параметр iOS Settings - Developer - Enable UI Automation, и я вспомнил, что перезагрузка устройства iOS была необходима когда это было разрешено, поэтому я попробовал перезагрузить устройство iOS, и Xcode начал вести себя снова, где я мог успешно записывать и запускать тесты на устройствах iOS. Полное раскрытие информации: я также включил и включил автоматизацию пользовательского интерфейса, прежде чем перезагружать устройство iOS, но я сомневаюсь, что это было необходимо. -rrh

Ответ 6

Проверьте консоль (Command-Shift-Y).

В моем случае был напечатан вывод, указывающий, почему тесты не выполнялись. (проверка перед полетом для динамических фреймворков была неудачной.) Но я не видел этого, потому что область отладки была разрушена.

Также в моем случае проблема была исправлена ​​добавлением $(PROJECT_DIR)/Carthage/Build/iOS к моим путям поиска во время выполнения, как описано здесь

Ответ 7

У меня была такая же проблема, и очистка папки сборки решила бы ее. Однако существует еще более быстрый способ, выполняющий Product -> Perform Action -> Test Without Building

Ответ 8

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

Вы не можете (всегда?) переименовывать тестовые классы/случаи. Создайте новый класс/случай и выбросьте старый.

Ответ 9

Если это для тестирования автоматизации пользовательского интерфейса, возможно, это связано с тем, что вы не инициализируете приложение и не запускаете его.

XCUIApplication *app = [[XCUIApplication alloc] init];
[app launch];

Ответ 10

FWIW У меня также была очень похожая проблема при использовании KIF beforeAll. Иногда код, расположенный внутри beforeAll, просто не работал, и все же тест вернется с успехом.

Это также иногда приводит к сбою Xcode. См. Страницу KIF Github здесь. Хотя некоторые из них отметили, что проблема может быть не из-за KIF, а скорее из-за самого XCTest

Временным решением было избежать использования beforeAll и вместо этого использовать beforeEach

Ответ 11

У меня был тестовый метод, помеченный как private и что я решил, просто убрав модификатор private доступа.