iOS Swift单元测试结果是未解析的标识符

Lei*_*ley 12 unit-testing ios swift

在swift中进行简单的测试功能:

func testExample() {
    var tagname = "someClass()"
    var logger = Device("", "") //unresolved identifier

    XCTAssert(true, "Pass")
}
Run Code Online (Sandbox Code Playgroud)

即使我使用"import"导入模块,我仍然无法使用模块中的类.虽然我可能在项目中弄乱了一些东西,但是我的示例项目中没有一个会让我使用模块类.

似乎它应该工作,但可能在beta 2中打破.

编辑:修复它IDE没有检查参数名称.似乎Xcode仍然有点不确定

Rus*_*ney 17

我今天遇到了同样的问题,不确定这是否仅在最近才可用 - 而不是import TARGET_NAME在您的测试文件中使用和/或声明您的类/方法public,您可以通过XCode将您的文件添加到测试目标File Inspector.

Cmd+ Opt+ 1在任何文件中显示它,并选中Target MembershipTests Target 下面的框.

文件检查员 - 目标会员

您可能需要重建.... Cmd+ b.

这应该是我的系统特有的....我正在运行Xcode 6.3 beta 1,并通过Quick + Nimble进行测试,两者都安装了最新的cocoapods beta.

  • 如果添加这样的文件时要小心,并且还使用“ @testable import”功能,因为最终会出现“无法将类型'X'的值分配为类型'X'”错误。请参阅https://forums.developer.apple.com/thread/24474。另外,“干净”有时似乎很有趣。删除文件并切换到@testable导入后,我得到“未解析的标识符”,并且清理无济于事。修改一个文件后,错误消失了... (3认同)

Kev*_*cke 8

对我来说问题是我的主要目标名称中有非字母数字字符.

我必须通过以下方式导入它(注意特殊@testable annotation)

@testable import my_tutorial_app


Jon*_*Jon 7

似乎在Xcode 6 Beta 4中,您需要将公共类和方法声明为"公共".例:

public class Device {
    public init(...) {
    }

    public func myMethod(...) {
    }
}
Run Code Online (Sandbox Code Playgroud)

现在可以从快速测试类中访问它们.

  • 这样做了.这只是一个临时的工作吗?或者这就是事情的意义.与项目一起定义的测试不应要求这样做.(我可以理解这些是否是针对模块的验收测试). (3认同)