Swift包单元测试能否集成Firebase?相关配置该如何操作?
能否在Swift包的测试中集成Firebase
可以正常集成,只需在Package.swift中把你用到的Firebase相关组件(如FirebaseFirestore、FirebaseStorage等)添加到测试target的依赖列表中即可,依赖配置规则和主target一致。
FirebaseApp.configure()的调用位置
推荐两种适配不同场景的调用方式:
- 若当前测试类所有用例都需要Firebase环境,将配置逻辑放在测试类的
class func setUp()类方法中,该方法会在当前类所有测试用例执行前仅调用一次,注意添加非空判断避免重复初始化报错:
import XCTest import FirebaseCore @testable import 你的Swift包模块名 final class YourPackageTests: XCTestCase { override class func setUp() { super.setUp() if FirebaseApp.app() == nil { FirebaseApp.configure() } } // 测试用例实现 }
- 若仅部分测试用例需要Firebase,可将配置逻辑放在对应用例的
func setUp()实例方法中,同样保留上述非空判断即可。
测试的bundle ID与GoogleService-Info.plist配置
Swift包的单元测试没有预设固定的bundle ID,可按以下流程配置:
- 直接在Firebase控制台新建一个任意bundle ID的iOS应用,只要该ID不与其他应用冲突即可,比如填写
com.yourname.yourpackage.test,下载生成的GoogleService-Info.plist文件 - 将plist文件放入测试target对应的资源目录中,然后在
Package.swift的测试target配置里添加资源声明,示例如下:
.testTarget( name: "你的测试target名", dependencies: ["你的Swift包主target", .product(name: "FirebaseCore", package: "firebase-ios-sdk")], resources: [.process("GoogleService-Info.plist")] )
完成配置后Firebase初始化时会自动从测试包的资源中读取配置文件,不需要额外匹配bundle ID即可正常运行。
内容的提问来源于stack exchange,提问作者smörkex
相关产品推荐
相关产品推荐

