Swift linux单元测试@testable导入失败

时间:2018-03-22 11:45:37

标签: swift

我尝试在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?

1 个答案:

答案 0 :(得分:1)

问题发生是因为我的应用程序是可执行的,它有main.swift文件。单元测试在这种情况下不起作用,或者我不知道如何使用它。有必要将项目拆分为projectApp目标和projectLib目标。 projectApp将只包含main.swift,而projectLib将包含其余部分。

在单元测试工作后,projectLib目标没有任何问题。有关详细信息,请访问:https://candostdagdeviren.com/2017/03/22/unit-tests-in-server-side-swift-api/