Как запустить 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?

2 ответов


я смог получить компиляцию 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 опции командной строки:

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

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


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