You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Swift Package库中StoreKit单元测试无法找到配置文件的问题求助

解决Swift Package中StoreKit测试配置文件找不到的问题

针对你遇到的SKTestErrorDomain Code=4 "File not found"错误,核心原因是测试目标的Bundle路径问题:SKTestSession默认从主Bundle查找文件,但Swift Package的测试目标有独立的Bundle,且资源复制后的路径可能和预期不符。以下是具体解决步骤:

1. 明确测试Bundle并指定配置文件URL

修改configureTestSession方法,直接从测试目标的Bundle中获取配置文件的URL,替代默认的文件名查找逻辑:

func configureTestSession() async throws {
    assert(testSession == nil, "Attempted to configure session multiple times")

    // 获取当前测试类所在的测试Bundle
    let testBundle = Bundle(for: StoreKit1Tests.self)
    // 从Bundle中精准查找配置文件
    guard let configFileURL = testBundle.url(forResource: "StoreConfiguration", withExtension: "storekit") else {
        throw NSError(domain: "StoreKitTests", code: -1, userInfo: [NSLocalizedDescriptionKey: "StoreConfiguration.storekit 未在测试Bundle中找到"])
    }

    // 使用文件URL初始化SKTestSession
    testSession = try SKTestSession(configurationFileURL: configFileURL)
    testSession.resetToDefaultState()
    testSession.disableDialogs = true
    testSession.clearTransactions()
}

2. 验证资源配置路径的正确性

检查Package.swift中testTarget的资源配置:

  • 确认Resources/StoreConfiguration.storekit路径与实际文件位置完全匹配(注意大小写,macOS/Linux环境下路径大小写敏感)。
  • 如果配置文件实际位于MyStoreTests/Resources/目录下,当前的.copy("Resources/StoreConfiguration.storekit")配置是正确的;若文件在其他子目录,需同步调整路径。

3. 清理构建缓存并重新构建

Xcode的构建缓存可能导致资源未被正确复制到测试Bundle中:

  • 执行Cmd+Shift+K清理构建文件夹
  • 重新运行测试目标

额外检查点

  • 确认StoreConfiguration.storekit已被添加到Swift Package的测试目标中(在Xcode中查看测试目标的"Build Phases" -> "Copy Bundle Resources",确保文件存在)
  • 检查配置文件的文件名拼写是否完全一致(包括.storekit后缀)

内容的提问来源于stack exchange,提问作者Bilal Durnagöl

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.24 14:25:14