XCTestManifests в сгенерированном быстром пакете - PullRequest
1 голос
/ 07 августа 2020

В настоящее время я создаю пакет Swift. По умолчанию пакет, созданный Xcode, содержит файл XCTestManifests со следующим кодом:

#if !canImport(ObjectiveC)
public func allTests() -> [XCTestCaseEntry] {
    return [
        testCase(TestPkgTests.allTests),
    ]
}
#endif

Как видите, это функция, которая возвращает все тестовые примеры. Однако мне любопытно, когда он будет вызван и в каком случае будет выполнено условие !CanImport (ObjectiveC).

1 Ответ

1 голос
/ 08 августа 2020

Это необходимо для запуска тестов на платформах, отличных от macOS.

В macOS средство выполнения тестов полагается на среду выполнения Objective C, которая отсутствует на других платформах, поэтому canImport(ObjectiveC) - это false. Функция allTests() вызывается из файла LinuxMain.swift, вы можете сгенерировать ее в macOS, запустив swift test --generate-linuxmain.

В более новых выпусках SwiftPM есть альтернативный вариант для запуска тестов на этих платформах: swift test --enable-test-discovery . Подробнее об этом можно прочитать здесь: https://forums.swift.org/t/pitch-enable-test-discovery-by-default/36619

...