在生产应用程序中使用ProcessInfo.processInfo.environment有多危险?

时间:2017-05-11 18:49:19

标签: ios swift unit-testing core-data production-environment

我写了一个模拟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"]的可行性如何?

1 个答案:

答案 0 :(得分:2)

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