我尝试在Linux Ubuntu 16.04上为我的Swift项目添加单元测试。现在我有了目录结构:
MyProject
|-Sources
| └MyProject
| |-IPcalc.swift
| └ main.swift
|
|-Tests
| |-MyProjectTests
| | └IPcalcTests.swift
| └ LinuxMain.swift
|
└ Package.swift
IPcalcTests.swift文件:
import XCTest
@testable import IPcalc
...
LinuxMain.swift文件:
import XCTest
@testable import IPcalcTests
XCTMain([
testCase(IPcalcTests.allTests),
])
Package.swift文件:
import PackageDescription
let package = Package(
name: "MyProject",
products: [],
dependencies: [],
targets: [
.target(
name: "MyProject",
dependencies: []),
.testTarget(
name: "MyProjectTests",
dependencies: ["MyProject"]),
]
)
当我尝试执行快速测试时,我得到:
$ swift test
Compile Swift Module 'MyProjectTests' (2 sources)
/home/user/MyProject/Tests/MyProjectTests/IPcalcTests.swift:2:18: error: no such module 'IPcalc'
@testable import IPcalc
为什么我无法将IPcalc类导入IPcalcTests.swift?
答案 0 :(得分:1)
问题发生是因为我的应用程序是可执行的,它有main.swift文件。单元测试在这种情况下不起作用,或者我不知道如何使用它。有必要将项目拆分为projectApp目标和projectLib目标。 projectApp将只包含main.swift,而projectLib将包含其余部分。
在单元测试工作后,projectLib目标没有任何问题。有关详细信息,请访问:https://candostdagdeviren.com/2017/03/22/unit-tests-in-server-side-swift-api/