我写了一个模拟Coredata
经理,以便在单元测试中测试一些类。
我有大约10个课程来自名为NSManagedObjectContext
的课程DatabaseManager
。我已经决定是否正在运行单元测试,不处理实际的Coredata NSManagedObjectContext
,而是重定向到Mock Coredata
类来获取NSManagedObjectContext
。
func getContext() -> NSManagedObjectContext {
if ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"] == nil
{
return persistentContainer.viewContext
}
else
{
return MockDatabaseController.instance.managedObjectContext()
}
}
这在单元测试和调试中以及通过adhoc分发时非常有效。
但我担心的是,如果从ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"]
应用程序获得正确的值,它可能会毫无用处。
在生产代码中使用ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"]
的可行性如何?
答案 0 :(得分:2)
我会使用Swift条件编译以及在构建参数中传递的-D标志,以确保代码仅在测试环境中处于活动状态,并且从未有机会将其投入生产。