Ios @testable import出现奇怪的编译错误
我刚刚在一个新项目中添加了一些单元测试。通常我使用Ios @testable import出现奇怪的编译错误,ios,swift,xctest,Ios,Swift,Xctest,我刚刚在一个新项目中添加了一些单元测试。通常我使用@testable import导入生产代码,因此我可以测试非公共方法: @testable import My-Project import XCTest final class MyTests: XCTestCase { func testOne() { // ... } } 但是,我看到了一些奇怪的编译错误,这是我以前从未见过的: Tests.swift:1:25: Consecutive statements
@testable import
导入生产代码,因此我可以测试非公共方法:
@testable import My-Project
import XCTest
final class MyTests: XCTestCase {
func testOne() {
// ...
}
}
但是,我看到了一些奇怪的编译错误,这是我以前从未见过的:
Tests.swift:1:25: Consecutive statements on a line must be separated by ';'
Tests.swift:1:25: Expected expression after unary operator
Tests.swift:1:25: Expressions are not allowed at the top level
Tests.swift:1:18: No such module 'My'
我已经检查并再次检查了所有内容,但无法找出产生此编译错误的原因
我缺少什么?项目名称(因此内部模块名称)包含一个破折号(-)字符
要解决此问题,请执行以下操作:
@testable import…
语句以反映新模块项目和目标名称可以包含特殊字符(如空格或破折号),但模块名称不能包含。默认情况下,Xcode通过用下划线替换无效字符从目标名称生成模块名称 因此,在你的情况下
@testable import My_Project
会解决这个问题。或者,在目标的生成设置中指定自定义“产品模块名称”
不需要重命名整个项目(或目标)