Reputation: 3143
I want to test drive some Swift examples using XCTest from the command line if possible.
import XCTest
class LeapTest : XCTestCase {
func testVanillaLeapYear() {
let year = Year(calendarYear: 1996)
XCTAssertTrue(year.isLeapYear);
}
}
I'd love to run it from the command line.
I already set Xcode to use the developer tools in the beta:
sudo xcode-select -s /Applications/Xcode6-Beta.app/Contents/Developer/
If I naively try and run it it goes like this
$ xcrun swift LeapTest.swift
LeapTest.swift:1:8: error: cannot load underlying module for 'XCTest'
import XCTest
^
Any way to run it directly from the CLI? Or do I have to create a Xcode project?
Upvotes: 34
Views: 19025
Reputation: 3668
I was able to get your XCTestCase compiling with the following command:
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
Then you can execute the tests with xctest
:
xcrun xctest LeapTests
And to break down those swiftc
command line options:
-F...
adds XCTest.framework to the framework search paths, enabling it to be imported from Swift-Xlinker -rpath ...
makes sure the XCTest shared library can be found at load time-lswiftCore
, I found that xctest
would crash when it tried to run the test suiteHope that helps!
Upvotes: 15
Reputation: 4124
I think the issue is you have your test.swift file under the main project's target membership. Make sure your swift test files belong to the Test target only.
Upvotes: 49