Пакет для тестового класса возвращает основной пакет в Xcode 10, а не блок модульных тестов - PullRequest
0 голосов
/ 08 июня 2018

У нас есть UnitTests, которые размещены в приложении.Для загрузки тестовых ресурсов мы используем: Bundle(for: TestClass.self).path(forResource: "some-file", ofType: "json").

В Xcode 9 он возвращает что-то вроде этого: /var/folders/4k/dzpnw8352jn_fl5hcc76pjs8k9qytq/T/com.apple.dt.XCTest/IDETestRunSession-707F04EA-2C21-4BA4-8730-00B0EC0F708F/UnitTests-2C97055A-9154-4521-9D12-7CF32FC38793/Session-UnitTests-2018-06-08_141829-RGxhj2.log

Но в Xcode 10 Bundle (для: TestClass.self) возвращает комплект приложенийпуть /Users/user/Library/Developer/CoreSimulator/Devices/118AACB9-486C-4E3B-94EA-257C3F082AE1/data/Containers/Bundle/Application/4234B280-E49C-4044-BAF4-CBFFEA8AFDB4/App.app

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

Обновление:

Исправлено в Xcode 10.1

Ответы [ 3 ]

0 голосов
/ 11 июня 2018

После некоторой проблемы с рефакторингом класса.Действительно, если класс содержал URL или набор свойств URLRequest был неверным.

например, три класса объявлены в одном модуле, а пакет отличается:

class WithRequest {
    var request: URLRequest?
}

class WithURL {
    var url: URL?
}

class WithString {
    var string: String?
}

print(Bundle(for: WithRequest.self)) //Incorrect App Bundle
print(Bundle(for: WithURL.self)) //Incorrect App Bundle
print(Bundle(for: WithString.self)) //Correct bundle
0 голосов
/ 31 октября 2018

Эта проблема теперь исправлена ​​в Xcode 10.1, как упомянуто в примечаниях к выпуску. Решенные проблемы https://developer.apple.com/documentation/xcode_release_notes/xcode_10_1_release_notes

0 голосов
/ 10 июня 2018

Вероятно, это ошибка в Xcode 10 / Swift 4.2, поскольку в примечаниях к выпуску есть еще одна ошибка, связанная с Bundle.Вы должны обязательно подать радар, чтобы убедиться, что проблема известна.

Из примечаний к выпуску бета-версии Xcode 10

• Базовый API Bundle.init (для: AnyClass) всегда возвращаеткомплект приложения при использовании в классе, который наследуется от универсального класса, даже если сам этот класс не является универсальным.(40367300)

В качестве возможного обходного пути вы можете рассмотреть возможность использования идентификатора пакета цели тестирования.

Чтобы найти идентификатор пакета цели тестирования, посмотрите здесь: enter image description here

Обновление

Похоже, что Bundle была постоянная проблема с Xcode 10 (на самом деле это Swift 4.2, у которого есть проблемы).

ОтXcode 10.1 beta 2 примечания к выпуску

• Инициализатор инициализации класса Bundle (для :) теперь работает согласованно с классами Swift, в том числе, когда он не работает в последних версиях операционной системы.(44489216)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...