【发布时间】:2015-08-03 23:29:58
【问题描述】:
我有一个使用核心数据的应用程序。应用程序的行为会有所不同,具体取决于该数据是否已被填充。
我曾希望,在每个测试用例之前,都会清空核心数据,让每个测试用例在新的应用实例上运行。测试用例不应该依赖于某些测试设备的状态,尤其是因为其他测试用例操纵了这种状态。不幸的是,默认情况下,核心数据不仅存在于测试用例之间,而且存在于完全独立的测试运行之间。我正在尝试解决此问题。
我的第一个想法是在拆解函数中转储所有核心数据。这样,每个测试都会自行清理。不幸的是,我无法使用此命令获取 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 来清空核心数据。
现在我认为必须有一种更好的内置方法来在每个测试用例运行的开始或结束时转储所有核心数据。它最好在最后,因为每个测试都应该在自己之后清理。有人知道这是怎么做到的吗?
提前致谢!
【问题讨论】:
标签: ios core-data swift2 ui-testing