ios - 如何在swift中测试框架中使用的核心数据模型

标签 ios swift unit-testing core-data

我正在编写一个 swift 框架,我正在使用来自“pod lib create”命令的模板。在我的开发 pod 中,我创建了一个核心数据模型文件,并在我的框架中使用核心数据。现在我想为它编写单元测试。这是我的单元测试类代码:

import XCTest
import CoreData
@testable import MyFramework

class MyClassTests: XCTestCase {

    var testPersistentContainer: NSPersistentContainer?

    override func setUp() {
        let persistentStoreDescription = NSPersistentStoreDescription()
        persistentStoreDescription.type = NSInMemoryStoreType

        let container = NSPersistentContainer(name: "MyCoreDataModelFileName")
        container.persistentStoreDescriptions = [persistentStoreDescription]
        container.loadPersistentStores { (storeDescription, error) in
            if let error = error {
                fatalError(error.localizedDescription)
            }
        }

        self.testPersistentContainer = container
    }

    override func tearDown() {

    }

    func testSomething() {
        // the persistent container I'm trying to use is nil
        XCTAssertNotNil(self.testPersistentContainer)
    }
}

我知道是什么问题,问题是测试目标找不到我的核心数据模型文件,当我在我的示例应用程序目标中创建一个具有正确名称的文件时,上述测试通过。但

问题

测试框架核心数据模型的正确方法是什么?

最佳答案

您是否尝试过从框架包中加载 Core Data 模型?

let managedObjectModel = NSManagedObjectModel.mergedModel(from: nil)

然后你不需要将它添加到你的测试目标

关于ios - 如何在swift中测试框架中使用的核心数据模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58214049/

相关文章:

ios - 为什么 UITableViewCell 的高度小于其文本的高度?

ios - 按数字索引 UITableview 部分

ios - SWIFT UITableView - 原型(prototype)单元格中的多行转至另一个 UITableView

unit-testing - 如何使用 '@vue/test-utils' 测试 VueRouter 的 beforeRouteEnter ?

c++ - 具有许多测试的 CMake 单元结构

ios - 如何根据第一次加载来加载TabBarController或UIViewController

ios - Swift - 创建自定义 View 的不同实例

ios - 在 Swift 3 中将 URL 输入到 UITextView 时如何调用函数

ruby-on-rails - 你如何分解出 RSpec 中常见的 "before(:each)"调用,以便多个规范可以使用它们?

c# - AES 加密视频流无法与 iOS 设备中的 azure 媒体播放器配合使用