我现在已经在一些项目中被这个问题所困,所以我很想找到一个好的解决方案。
考虑以下情况:
MyObject
的对象,该对象在MyBusinessLogicObject
中使用。在MyBusinessLogicObjectTests
中,我@testable import
编辑了我的应用程序包,但需要在将对象从非泛型集合中拉出后进行有条件的强制转换:
import XCTest
@testable import MyApp
class MyBusinessLogicObjectTests: XCTestCase {
var bizLogicObject: MyBusinessLogicObject!
// setUp() etc.
func testStuff() {
guard let result = bizLogicObject.someOrderedCollectionProperty.first as? MyObject else {
XCTFail()
return
}
// more test code here
}
}
问题是,即使我可以看到bizLogicObject.someOrderedCollectionProperty.first
的类型为MyObject
条件转换失败。
我理解这是因为当您@testable import
这样时,您应用中的所有类型都会重复。因此,运行时检查实际上最终会针对两种不同的类型,这就是它失败的原因。
有没有人知道如何在测试中通过条件转换,你需要在应用中定义的类型?
答案 0 :(得分:-1)
确保MyObject
仅包含在应用目标中,而不是同时包含在应用目标AND测试目标中。