最近我一直试图将项目中的大部分代码转换为swift。事情进展相当顺利,直到我进行了大量测试应用程序核心数据功能的单元测试。这是有问题的测试,我在尝试运行时遇到的问题有很多问题。
import UIKit
import XCTest
import CoreData
class CalculateConversationSinceTimeTest: XCTestCase {
override func setUp() {
super.setUp()
}
override func tearDown() {
super.tearDown()
}
func testCalculateSinceTime() {
let managedObjectModel = NSManagedObjectModel.mergedModelFromBundles([NSBundle.mainBundle()])!
let persistentStoreCoordinator = NSPersistentStoreCoordinator(managedObjectModel: managedObjectModel)
persistentStoreCoordinator.addPersistentStoreWithType(NSInMemoryStoreType, configuration: nil, URL: nil, options: nil, error: nil)
let managedObjectContext = NSManagedObjectContext()
managedObjectContext.persistentStoreCoordinator = persistentStoreCoordinator
let calculateConversationSinceTime = CalculateConversationSinceTime(managedObjectContext: managedObjectContext, messageRetentionPeriod: 9000000, bareJidStr: "test")
}
}
此单元测试测试一个名为CalculateConversationSinceTime
的快速类(不是视图控制器),因为它所做的只是创建一个类的实例。我的第一个问题是关于managedObjectModel
,persistentStoreCoordinator
和managedObjectContext
的设置。我从来没有在一个快速的单元测试中做过这个,并且想要一些验证它正确完成。其次,我在testCalculateSinceTime()
内看到了一些错误/警告,似乎无法找出原因。首先,当我尝试初始化一个新实例时,我收到一条错误,指出CalculateConversationSinceTime
没有名为init的成员。初始化程序在类中正确定义,我可以在代码的其他非单元测试区域使用它。为什么我收到此错误?当我尝试调用CalculateConversationSinceTime
类中定义的公共方法时,会出现第二个问题。 Swift一直告诉我,我创建的CalculateConversationSinceTime
实例的类型为<<error type>>
。为什么我的实例没有正确初始化?有人可以提供一些见解我为什么看到这些问题?感谢。