由于与不能够在多个目标
当编译相同斯威夫特代码的不同目标部分执行子类的问题时,编译器实际上产生不同类别。所以它的行为如同设计,但在运行应用程序的单元测试时几乎肯定不是你想要的。
有两种方法,我建议您设置模式,让测试:
1.公共模式(推荐)
在你的应用目标:
import RealmSwift
public class MyModel: Object {}
此代码应该只有被编译为应用程序目标的一部分,并且您的单元测试可以按以下方式设置:
import MyApp
// should be able to access `MyModel`
够简单吗?
2. @Testable(SWIFT 2只)
这种方法依赖于@testable
关键字夫特2.
引入。在你的应用程序的目标:
import RealmSwift
internal class MyModel: Object {} // ACL cannot be `private`
再次,此代码应只有被编译为您的应用程序目标的一部分,并且您的单元测试可以按以下方式设置:
@testable import MyApp
// should be able to access `MyModel`
确保MyApp的内部版本设置Enable Testability
设置为YES
。
如果您正在构建一个框架,而该框架的用户无法访问某些内部模型,则此方法可能优于公共模型。
领域都有自己的文档,详细说明这些常见的方法来测试,你可以在这里阅读专用部分:https://realm.io/docs/swift/latest/#avoid-linking-realm-and-tested-code-in-test-targets
正确的,我*可*使用@testable,但文件的访问我的模型从内MyApp的可以在编译MyAppTests如果不是从我的测试访问为MyModel!非常令人沮丧 – styler1972
听起来像你的项目配置有问题。如果我不得不猜测,我会说模型文件正在与单元测试目标进行编译,但不是应用程序目标。如果您将项目发送到[email protected],我很乐意查看它。 – jpsim
嘿,事实证明,我不得不停止针对我的整个MyApp模块的测试..坚果,它不工作! – styler1972