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

Как запустить XCTest для быстрого приложения из командной строки?

Я хочу протестировать некоторые примеры Swift с помощью XCTest из командной строки, если это возможно.

import XCTest

class LeapTest : XCTestCase {

    func testVanillaLeapYear() {
      let year = Year(calendarYear: 1996)
      XCTAssertTrue(year.isLeapYear);
    }
}

Мне бы хотелось запустить его из командной строки.

Я уже установил Xcode для использования инструментов разработчика в бета-версии:

sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer/

Если я наивно попытаюсь запустить его, он будет выглядеть следующим образом

$ xcrun swift LeapTest.swift
LeapTest.swift:1:8: error: cannot load underlying module for 'XCTest'
import XCTest
       ^

Любой способ запустить его непосредственно из CLI? Или мне нужно создать проект Xcode?

4b9b3361

Ответ 1

Мне удалось собрать компиляцию XCTestCase с помощью следующей команды:

swiftc \
-F/Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks \
-Xlinker -rpath -Xlinker /Applications/Xcode6-Beta5.app/Contents/Developer/Platforms/MacOSX.platform/Developer/Library/Frameworks \
-lswiftCore LeapTest.swift \
-o LeapTests

Затем вы можете выполнить тесты с помощью xctest:

xcrun xctest LeapTests

И чтобы разбить эти параметры командной строки swiftc:

  • -F... добавляет XCTest.framework в пути поиска в каркасе, позволяя им импортировать из Swift
  • -Xlinker -rpath ... гарантирует, что общедоступную библиотеку XCTest можно найти во время загрузки
  • Без явного указания -lswiftCore я обнаружил, что xctest будет сбой при попытке запустить набор тестов

Надеюсь, что это поможет!

Ответ 2

Я думаю, что проблема заключается в том, что у вас есть файл test.swift под основным целевым членством в проекте. Убедитесь, что ваши быстрые тестовые файлы принадлежат только тестовому объекту.