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



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



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



Я не мог понять, как мне избежать этого глюка.



enter image description here

582   14  

14 ответов:

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

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

для меня исправление состояло в том, чтобы префиксировать весь метод с помощью 'test'

т. е.

func arrayResponseCall() 

должно быть:

func testArrayResponseCall()

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

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

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

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

  1. подождите некоторое время. Иногда требуется время, чтобы загрузить Алмаз. переход между различными файлами, а затем перейти к тому же тест-кейс он должен появиться.

  2. очистить проект, очистить папку сборки и даже удалить содержимое производных данных. проверить это удаление данных безопасно.

  3. Выйти Из Xcode и откройте его снова.

  4. убедитесь, что ваш имя тестового набора начинается сtestFunc_Name

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

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

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

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

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

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

Xcode 7

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

в Xcode 7 установка модульного тестирования немного проще, чем в 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
    }
}

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

Смотрите также следующие ответы:

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

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

единственное, что исправило мою проблему, это удаление всего моего тестового класса (временное сохранение его содержимого в другом месте), а затем воссоздание тестового класса и (возможно, более тщательно?) установка параметров сборки снова и снова.

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

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

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

для меня, мне нужно добавить тесты ниже здесь enter image description here

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

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

private func testString()

to:

public func testString()

Comments

    Ничего не найдено.