Редактор Xcode 6 не распознает модульные тесты

У меня проблема с тем, что Xcode IDE 6 не обнаруживает мои быстрые случаи unit test правильно. Когда я запускаю модульные тесты, все тесты выполнялись.

Но в среде IDE при редактировании модульные тесты не распознаются. Я должен запустить весь пакет unit test для запуска одного теста.

Я не мог понять, как я избегаю этого срыва.

enter image description here

Ответ 1

Проблема решена. Все, что мне нужно сделать, это запустить окно "Окно → Проекты" и удалить "Производные данные". После индексирования все тесты работают.

Тем временем яблоко исправляет ошибки в редакторе Xcode 6.3 по битам.

Ответ 2

Для меня было исправлено все префикс "test"

то есть.

func arrayResponseCall() 

должен быть:

func testArrayResponseCall()

Ответ 3

"Исправить" для меня было добавить новый тест. Я придумал какую-то глупость:

func testThatNothing() {
    XCTAssertTrue(true, "True should be true")
}

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

Ответ 4

Ниже приведено несколько решений для этой проблемы:

  • Подождите некоторое время. Иногда требуется время для загрузки алмазов. Перемещайтесь между разными файлами, а затем переходите к тому же тестовому сценарию, который должен появиться.

  • Очистить проект, очистить папку сборки и даже удалить производные данные. Проверьте безопасное удаление данных.

  • Закройте Xcode и откройте его снова.

  • Убедитесь, что имя тестового теста начинается с testFunc_Name

  • Иногда ваш файл тестового файла может содержать функцию, отличную от тестового. В таком случае символ алмаза не появляется. Remove such function.

В моем случае решения 1, 3 и 5 часто работали для меня.

Ответ 5

У меня была такая же проблема. Просто убедитесь, что в каждом из ваших тестовых случаев есть какие-то утверждения XCTAssert().

func testSomething(){
     XCTAssert(true, "Pass")
}

Ответ 6

(Поскольку ваш комментарий указывает на то, что вы все еще испытываете эту проблему через неделю, это может вам не помочь, но...)

Я столкнулся с этой проблемой, когда добавление нового теста (Swift) в 6.1 не заставит его отображаться в "Навигаторе тестирования" или в редакторе схем - перезапуск Xcode устранил проблему, и теперь я могу запускать тесты индивидуально.

Ответ 7

Xcode 7

Мой полный ответ здесь.

В Xcode 7 настройка Unit Testing немного проще, чем в Xcode 6 (нет необходимости комментировать класс и методы как public). Используйте @testable перед импортом имени класса.

import XCTest
@testable import MyProject

class MyClassTests: XCTestCase {

    func testMyMethod() {

        let myClass = MyClass()
        let sum = myClass.addTwoNumbers(1, 2)

        XCTAssertEqual(sum, 3)
    }
}

В вашем классе вам не нужно ничего особенного.

class MyClass {

    func addTwoNumbers(a: Int, b: Int) -> Int {
        return a + b
    }
}

Возможно, вам также понадобится установить "Определяет модуль" в разделе "Упаковка" на "ДА" для параметров настройки вашего приложения.

См. также эти ответы:

Ответ 8

Убедитесь, что имя тестового примера начинается с "теста", за которым следует любое имя, которое вы хотите, и построите (cmd + B) проект. Появится алмаз!!.

Ответ 9

У меня была аналогичная ошибка (хотя в Objective C, а не быстро). Если я добавлю новый метод тестирования в класс, новый метод не будет отображаться в тестовом навигаторе и не будет выполнен, когда я запустил весь пакет. Я также не получал бы эти точки в боковом баре рядом с каждым методом, который, если бы он нажал, запускал только один метод тестирования.

Единственная проблема, с которой я столкнулся, - удалить весь тестовый класс (временно сохраняя его содержимое в другом месте), а затем воссоздать тестовый класс и (возможно, более тщательно?) снова установить параметры сборки.

Ответ 10

Иногда вам нужно только ждать, пока Xcode завершит индексирование всех ваших файлов. Для больших проектов мое навигационное представление unit test часто пустое, пока оно не закончится.

Ответ 11

Когда вы добавляете новый тест, сохраните файл (Cmd + S), и появится алмаз (подтвержденный на Xcode 7.3)

Ответ 12

Для меня мне нужно добавить тесты ниже: введите описание изображения здесь

Ответ 13

Для меня было достаточно выбрать Product->Test и немного подождать. Когда тесты только начинают работать, все алмазы становятся доступными

Ответ 14

Я решил проблему, превратив методы private в public.

Итак, если это та самая проблема, с которой вы столкнулись, переключитесь:

private func testString()

в

public func testString()