如何从每个用户界面的空核心数据开始在Swift中testing断言?

我有一个使用核心数据的应用程序。 应用程序的行为取决于数据是否已被填充。

我希望,在每个testing案例之前,核心数据将被清空,使得每个testing用例都运行在一个新的应用程序实例上。 testing用例不应该依赖某个testing设备的状态,尤其是因为其他testing用例操纵这个状态。 不幸的是,默认情况下,核心数据不仅在testing用例之间,而且在完全独立的testing运行之间。 我试图解决这个问题。

我的第一个想法是将所有核心数据转储到拆卸函数中。 这样每个testing都会自行清理。 不幸的是,我无法用这个命令获得一个NSManagedObjectContext:

let context = (UIApplication.sharedApplication().delegate as! MyApp.AppDelegate).managedObjectContext! 

因为它有这个编译器错误:

  Undefined symbols for architecture x86_64: "type metadata accessor for MyApp.AppDelegate", referenced from: MyAppUITests.MyAppUITests.tearDown 

为了解决这个错误,我尝试将UITests添加到AppDelegate目标成员资格并执行@testable import MyApp 。 都没有工作。 我需要managedObjectContext清空核心数据。

现在我认为在每个testing用例运行的开始或结束时,必须有一个更好的内置方法来转储所有的核心数据。 最好是在最后,因为每个testing应该自行清理。 有人知道如何做到这一点?

提前致谢!

你可以通过使用XCUIApplication().launchEnvironment = ["key":"val"]来简单地完成这个工作XCUIApplication().launchEnvironment = ["key":"val"]

并检查你是否AppDelegate和parsingNSProcessInfo。

我正努力从应用程序的信息,不仅在启动过程中的testing/发送指令。