ios – 如何从Swift中的每个UI测试断言开始使用空Core数据?

我有一个使用核心数据的应用程序.应用程序的行为会有所不同,具体取决于是否已填充该数据.

我希望在每个测试用例之前,核心数据将被清空,使每个测试用例在一个新的应用程序实例上运行.测试用例不应该依赖于某些测试设备的状态,特别是因为其他测试用例操纵这种状态.不幸的是,默认情况下,核心数据不仅存在于测试用例之间,还存在于完全独立的测试运行之间.我正试图解决这个问题.

我的第一个想法是将所有核心数据转储到拆解功能中.这样每个测试都会自行清理.不幸的是,我无法使用此命令获取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导入MyApp.都没有奏效.我需要managedObjectContext来清空核心数据.

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

提前致谢!

解决方法

您可以使用XCUIApplication()轻松完成此操作.inleunchEnvironment = [“key”:“val”]

并检查您是否AppDelegate和解析NSProcessInfo.

我正在努力从应用程序获取测试/发送指令的信息,不仅仅是在启动期间.

相关文章

UITabBarController 是 iOS 中用于管理和显示选项卡界面的一...
UITableView的重用机制避免了频繁创建和销毁单元格的开销,使...
Objective-C中,类的实例变量(instance variables)和属性(...
从内存管理的角度来看,block可以作为方法的传入参数是因为b...
WKWebView 是 iOS 开发中用于显示网页内容的组件,它是在 iO...
OC中常用的多线程编程技术: 1. NSThread NSThread是Objecti...