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

Unit test не может найти класс для тестирования

У меня есть стандартный класс класса GeoRssParserDelegate, который необходимо протестировать.

В моем быстром unit test у меня есть это:

func testParser()
{
    var bundle = NSBundle(forClass:GeoRssParserTest.classForKeyedArchiver())
    var path = bundle.pathForResource("test", ofType: "xml")
    let data = NSData.dataWithContentsOfFile(path, options: NSDataReadingOptions.DataReadingMapped, error: nil)
    let xmlParser = NSXMLParser(data:data)
    let delegate = GeoRssParserDelegate() <-- Compiler fails here
    var bStatus = xmlParser.parse()
    XCTAssertTrue(bStatus, "Parse failed", file: __FILE__, line: __LINE__)        
}

Компилятор не работает в строке, выделенной выше. Ошибка компилятора: использование неразрешенного idenitifier GeorRssParserDelegate

Этот класс существует и строится с самим продуктом. Требуется ли что-то специальное?

4b9b3361

Ответ 1

Вам нужно импортировать свой прикладной модуль в unit test. Обычно это имя приложения. Например, если ваше имя приложения GeoRssParser, оператор import будет выглядеть следующим образом:

import GeoRssParser

Ответ 2

Если тестируемый класс скомпилирован в другую цель (например, ваше приложение, в отличие от тестового пакета), убедитесь, что класс или структура, которую вы пытаетесь использовать, отмечена public - видимость доступа по умолчанию не позволяет проводить перекрестное тестирование.

Ответ 4

Решение для Xcode 8/9, которое работает для меня:

@testable import Product_Module_Name

note: не имя цели, а название продукта.

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

Большое спасибо этому answer

Ответ 5

Просто добавьте класс, который вы тестируете в Target → Build Phases → Compile Sources

Как я исправил свою проблему.

Ответ 6

Сделайте следующие 3 шага →  1. Введите @testable import Your_Project_name  2. Затем сохраните (CTRL + S)  3. Затем постройте (CTRL + B)