如何从命令行运行XCTest以获得快速应用程序?

时间:2014-06-16 16:41:41

标签: swift xctest

如果可能的话,我想从命令行使用XCTest测试一些Swift示例。

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 个答案:

答案 0 :(得分:46)

我认为问题是您在主项目的目标成员资格下有test.swift文件。确保您的swift测试文件仅属于Test目标。

答案 1 :(得分:12)

我能够使用以下命令进行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.framework添加到框架搜索路径,使其能够从Swift导入
  2. -Xlinker -rpath ...确保可以在加载时找到XCTest共享库
  3. 在没有明确指定-lswiftCore的情况下,我发现xctest在尝试运行测试套件时会崩溃
  4. 希望有所帮助!