Swift Package中能否将单元测试文件与被测试文件放在同一路径?
在Swift Package Manager中实现测试文件与源码同目录
SPM默认要求测试代码放在独立的Tests目录下,但可以通过自定义包配置实现你想要的同目录结构。
实现步骤
- 保持你期望的目录结构:
Sources -- MyPackage ----- MyCode.swift ----- MyCodeTests.swift
- 修改Package.swift配置:
在包的manifest文件中,分别定义主源码目标和测试目标,指定各自的源文件路径:
// swift-tools-version: 5.9 import PackageDescription let package = Package( name: "MyPackage", products: [ .library( name: "MyPackage", targets: ["MyPackage"]), ], targets: [ // 主源码目标:排除测试文件 .target( name: "MyPackage", path: "Sources/MyPackage", exclude: ["MyCodeTests.swift"]), // 测试目标:指定同目录下的测试文件 .testTarget( name: "MyPackageTests", dependencies: ["MyPackage"], path: "Sources/MyPackage", sources: ["MyCodeTests.swift"]), ] )
关键说明
- 主目标通过
exclude参数排除测试文件,避免测试代码被编译进正式库 - 测试目标通过
path指向源码目录,再用sources明确指定测试文件路径 - 配置完成后,SPM会正确识别两类文件,同时保持你想要的同目录布局
内容的提问来源于stack exchange,提问作者tisma
相关产品推荐
相关产品推荐

