如何通过导入其他脚本类测试Swift脚本?
如何在Swift脚本中导入其他脚本的类进行测试
当然可以!不过直接在测试脚本里用import ScriptA是行不通的——Swift脚本默认不支持这种文件级别的导入。不过我们可以通过将两个脚本一起编译运行的方式来实现,同时还要修正你测试代码里的几个小问题。
第一步:修正测试脚本的错误
你的测试代码有两处需要调整:
convertNameIntoLowerCase是实例方法,不是类方法,必须先创建Main类的实例才能调用它;XCTAssertTrue的用法不对,比较字符串相等应该用XCTAssertEqual。
修正后的ScriptATests.swift如下:
#!/usr/bin/swift import Foundation import XCTest class ATest : XCTestCase { func testIt() { // 创建Main类的实例 let mainInstance = Main() // 使用XCTAssertEqual比较结果 XCTAssertEqual(mainInstance.convertNameIntoLowerCase("SARAH"), "sarah") } } // 添加测试运行入口,让XCTest执行测试用例 XCTestSuite.default.run()
第二步:一起编译运行两个脚本
打开终端,运行以下命令,把ScriptA.swift和ScriptATests.swift作为参数传给swift命令:
swift ScriptA.swift ScriptATests.swift
这样Swift会把两个文件当作同一个项目的一部分编译,测试脚本就能直接访问Main类了。运行后你会看到XCTest的测试结果输出。
可选:更规范的脚本测试方式
如果你的脚本项目越来越大,也可以把ScriptA.swift打包成一个本地模块,然后在测试脚本里用@testable import导入,但对于小型脚本来说,上面的方法已经足够简单高效。
内容的提问来源于stack exchange,提问作者久美子
相关产品推荐
相关产品推荐

