iOS - 在Swift中编写核心数据单元测试

时间:2015-03-27 14:23:16

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

最近我一直试图将项目中的大部分代码转换为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的快速类(不是视图控制器),因为它所做的只是创建一个类的实例。我的第一个问题是关于managedObjectModelpersistentStoreCoordinatormanagedObjectContext的设置。我从来没有在一个快速的单元测试中做过这个,并且想要一些验证它正确完成。其次,我在testCalculateSinceTime()内看到了一些错误/警告,似乎无法找出原因。首先,当我尝试初始化一个新实例时,我收到一条错误,指出CalculateConversationSinceTime没有名为init的成员。初始化程序在类中正确定义,我可以在代码的其他非单元测试区域使用它。为什么我收到此错误?当我尝试调用CalculateConversationSinceTime类中定义的公共方法时,会出现第二个问题。 Swift一直告诉我,我创建的CalculateConversationSinceTime实例的类型为<<error type>>。为什么我的实例没有正确初始化?有人可以提供一些见解我为什么看到这些问题?感谢。

0 个答案:

没有答案