Swift 3单元测试 - 使用import @testable时链接器失败

时间:2017-04-12 01:54:46

标签: swift xcode unit-testing cocoa linker

我目前正在尝试为我的(macOS)Xcode项目编写单元测试( NOT UI测试)。我创建了一个新的单元测试目标,它为我创建了一个空白单元测试文件。

这符合并且链接正常,但没有测试。

一旦我添加了行@testable import Pilot,其中Pilot是我的App Target的名称,并且我尝试编译并运行,它会失败并显示以下消息:

Linker command failed with exit code 1 (use -v to see invocation)

我已经尝试了所有可以找到的东西,但似乎没有任何效果。我在这里阅读的其他帖子在UI测试中处理了这个问题,但那是因为你无法在UI测试中使用@testable。您应该能够在单元测试中使用它,但我无法弄清楚为什么这不起作用。

有没有人有任何见解?

如果有帮助,我的项目位于:https://github.com/RohanNagar/pilot-osx

以下是完整的PilotTests.swift文件:

import XCTest

@testable import Pilot

class PilotTests: XCTestCase {

    override func setUp() {
        super.setUp()
        // Put setup code here. This method is called before the invocation of each test method in the class.
    }

    override func tearDown() {
        // Put teardown code here. This method is called after the invocation of each test method in the class.
        super.tearDown()
    }

    func testExample() {
        // This is an example of a functional test case.
        // Use XCTAssert and related functions to verify your tests produce the correct results.
    }

    func testPerformanceExample() {
        // This is an example of a performance test case.
        self.measure {
            // Put the code you want to measure the time of here.
        }
    }

}

4 个答案:

答案 0 :(得分:4)

如果您的CocoaPods框架未包含在测试目标中。它会抛出这个错误。

我确保运行pod安装,但仍然失败了。

所以' pod deintegrate Yourproject.xcodeproj'并重新安装(pod安装),清除问题。

答案 1 :(得分:2)

导入失败,因为项目无法链接在一起。我下载了它,尝试运行它时出现以下错误:

Showing Recent Issues
ld: framework not found Realm for architecture x86_64

尝试清理您的构建文件夹,或将项目下载到新文件夹,然后解决此问题...之后您将能够编译和@testable导入Pilot。

答案 2 :(得分:1)

将主机应用程序设置为您的项目目标。 另外,请选中“允许测试主机应用程序API”已打开。

enter image description here

答案 3 :(得分:0)

  1. 选择测试目标
  2. 选择构建阶段
  3. 在“框架搜索路径”中,添加此 "${PODS_CONFIGURATION_BUILD_DIR}/"recursive选项