你如何在斯威夫特游乐场打电话给XCTest?

时间:2014-07-31 05:02:05

标签: swift xctest swift-playground

我正在观看Bendyworks关于使用Swift进行单元测试的文章:http://bendyworks.com/unit-testing-in-swift/

和你使用Swift一样,我把代码扔到了Playground中,然后把它捅了一下。

import Cocoa

class Firewood {
    var charred: Bool
    init()  {
        println("initializing our firewood")
        charred = false
    }
    func burn() {
        charred = true
    }
}

import XCTest
class SimpleFirewoodTests: XCTestCase {
    func testBurningActuallyChars() {
        let firewood = Firewood()
        firewood.burn()
        assert(firewood.charred, "should be charred after burning")
    }
}

但是当然你不能按下测试按钮以及Playground是一个连续的REPL,所以你需要知道如何调用测试,有人知道XCTest的内部知道要调用什么来进行测试运行吗?

4 个答案:

答案 0 :(得分:13)

我刚刚写了一篇博文,解释了如何在Xcode 7中完成此操作,以及一个运行单元测试的Playground示例。简而言之,您可以在操场内创建一个小型测试运行器对象,该对象运行测试并报告结果。与观察者一起捕捉失败的测试,您可以通过游乐场获得相当不错的TDD设置。

http://initwithstyle.net/2015/11/tdd-in-swift-playgrounds/ https://github.com/sshrpe/TDDSwiftPlayground

答案 1 :(得分:12)

这是一个完整的示例,适用于Swift 3+,它向您展示了如何执行此操作。这很好,因为现在您可以使用XCTAssert,然后一旦您解决了问题,就可以轻松地将它们直接移动到您的真实测试包中。     导入XCTest

class MyTestCase: XCTestCase {

   func testExample() {
       print("Test1")
       XCTAssertTrue(true)
   }

   func testAnother() {
       print("Test2")
       XCTAssertFalse(false)
   }
}

MyTestCase.defaultTestSuite().run() // Swift 3
MyTestCase.defaultTestSuite.run() // Swift 4

这就是它的样子:

enter image description here

不幸的是,你必须打开日志窗口才能看到它是通过还是失败。如果您能看到测试结果着色,那就太好了......

答案 2 :(得分:4)

游乐场目前不支持XCTest。如果这是您喜欢的内容,我们建议您在http://bugreport.apple.com提交错误报告。

答案 3 :(得分:2)

现在可以通过在测试类的defaultTestSuite上调用run()来在playground中运行测试:

let testSuite = SimpleFirewoodTests.defaultTestSuite()
testSuite.run()

注意:测试中的断言应替换为XCTAssertEqual。