ios - 使用 @testable 来自 XCTest 的 "Use of unresolved identifier"和 "value of type has no member"

标签 ios xcode swift xctest

让我解释一下背景。 我们的项目有 1 个框架目标 和使用该框架的 1 个测试应用程序目标。所有逻辑和代码都进入框架,测试应用程序仅导入框架。测试应用程序中不包含任何逻辑。

现在这是我的两个问题:

<强>1。 Xcode 无法找到我在 XCTest 类的框架目标中声明的类 (SearchVC)。 当我尝试从该类创建实例时,我收到“使用未解析的标识符”。但是,在从框架目标中的其他类创建实例时,我没有任何问题。事实上,我在另一个类 (DashboardVC) 中创建了一个属性(SearchVC 类型),并且我可以正确访问和初始化它,这将我带到下一个问题。

<强>2。 Xcode 找不到我从 XCTest 类创建(在 DashboardVC 中)的内部属性(SearchVC 类型)。 除了这个新属性之外,我可以找到任何其他内部属性。

需要考虑的事情:

  1. 我正在使用 XCTest 类中的 @testable
  2. 这两个类仅包含在框架目标中,而 XCTest 类包含在相应的测试目标中。
  3. 如果我将 SearchVC 作为一种解决方法包含在测试目标中,我就能够克服问题 1。但是,问题 2 仍然存在。 XCode 仍然无法在其他类中找到该属性。

这些是类的简化片段。

class DashboardVC : UIViewController, UITableViewDelegate, UITableViewDataSource {

    ... many other properties ...

    var searchVC: SearchVC!

    override func viewDidLoad() {
        super.viewDidLoad()

        searchVC = SearchVC()
    }
}

现在是第二节课

class SearchVC: UIViewController {

    override func viewDidLoad() {
        super.viewDidLoad()
}

然后我一直在尝试编写测试目标的以下测试成员。

import XCTest
@testable import Invest

class SearchVC: XCTestCase {

    ... setup and tearDown methods not included for clarity ...

    func testSearchVC_isAddedToDashboard() {

        let dashboard = DashboardVC()
        _ = dashboard.view
        XCTAssertNotNil(dashboard.searchVC.view, "View should not be nil")
    }
}

有什么想法可能会发生这种情况或如何解决它吗?

谢谢

最佳答案

我终于能够让它发挥作用了。 事实证明这是 Xcode 的一个小故障。由于无法解释的原因,我能够从最新版本的代码中提取数据,即使我遇到了错误,我也能够通过从测试目标中取出每个非测试类(应该是这样)来解决这些问题,并且只保留相关的类。我能够访问我的属性(property)并保持目标之间的正确间隔。

有人遇到过同样的问题吗?

关于ios - 使用 @testable 来自 XCTest 的 "Use of unresolved identifier"和 "value of type has no member",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37378220/

相关文章:

IOS 以编程方式将应用程序移动到主屏幕的文件夹中

swift - 如何只显示其 super UIView 中的子 UIView 部分?

ios - Assets 图像在 Release模式下不显示

ios - UISearchController 取消按钮不可点击

ios - 命令 PhaseScriptExecution 失败,退出代码为非零 I

iOS,如何在 "Metadata and Uploads"中添加阿拉伯语

ios - 使用 RxSwift 的 TabelView 委托(delegate)方法

xcode - 从 Settings.bundle plist 文件注册默认设置?

swift - 在 Swift 3 中计算范围计数

iphone - 如何计算NSString对象中非字母数字字符的数量?