【问题标题】:Swift linux unit test @testable import failsSwift linux单元测试@testable导入失败
【发布时间】:2018-08-31 20:14:28
【问题描述】:

我尝试将单元测试添加到我在 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 时,我得到:

$ 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?

【问题讨论】:

  • 不久前我也遇到过类似的事情。问题是我需要先手动构建缺少的模块,然后再进行项目的其余部分。这有帮助吗?

标签: swift


【解决方案1】:

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

之后,单元测试可以正常工作,projectLib 目标没有任何问题。更多详情在这里:https://riis.com/blog/swift-unit-testing-ubuntu/

https://www.raywenderlich.com/1072244-server-side-swift-testing-on-linux

【讨论】:

猜你喜欢
  • 2015-11-11
  • 1970-01-01
  • 1970-01-01
  • 2021-09-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多