我编写了一个模拟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()
    }
}

这在单元测试和调试中以及通过即席分发时都非常有效。

但是我担心的是,如果它无法从ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"]应用程序中获取正确的值,将可能毫无用处。

在生产代码中使用ProcessInfo.processInfo.environment["XCTestConfigurationFilePath"]有多可行?

最佳答案

我将使用Swift条件编译以及在构建参数中传递的-D标志,以确保该代码仅在测试环境中处于 Activity 状态,而从未有机会使其投入生产。

10-04 10:31