让我解释一下背景。 我们的项目有 1 个框架目标 和使用该框架的 1 个测试应用程序目标。所有逻辑和代码都进入框架,测试应用程序仅导入框架。测试应用程序中不包含任何逻辑。
现在这是我的两个问题:
<强>1。 Xcode 无法找到我在 XCTest 类的框架目标中声明的类 (SearchVC)。 当我尝试从该类创建实例时,我收到“使用未解析的标识符”。但是,在从框架目标中的其他类创建实例时,我没有任何问题。事实上,我在另一个类 (DashboardVC) 中创建了一个属性(SearchVC 类型),并且我可以正确访问和初始化它,这将我带到下一个问题。
<强>2。 Xcode 找不到我从 XCTest 类创建(在 DashboardVC 中)的内部属性(SearchVC 类型)。 除了这个新属性之外,我可以找到任何其他内部属性。
需要考虑的事情:
- 我正在使用 XCTest 类中的 @testable
- 这两个类仅包含在框架目标中,而 XCTest 类包含在相应的测试目标中。
- 如果我将 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/