Xcode 9自定义单元测试未被识别问题求助
兄弟,我之前在Xcode里写单元测试也碰到过一模一样的情况,给你梳理几个最可能的原因和解决办法,挨个排查应该就能搞定:
检查测试方法命名规则:Xcode的单元测试方法必须以
test开头(大小写敏感),比如testLoginFlow才会被识别,要是你写成myLoginTest或者TestLogin,Xcode根本不会把它当成测试方法。赶紧看看你自定义测试的方法名是不是符合这个要求。确认测试类的继承关系:你的测试类必须继承自
XCTestCase,如果写错成别的父类,或者漏了继承,Xcode不会把这个类当成测试类。比如正确的类声明应该是:class MyFeatureTests: XCTestCase { // 测试方法写在这里 }检查测试文件的Target归属:右键你的自定义测试文件,选择「Show File Inspector」,在右侧面板的「Target Membership」里,确保对应的测试Target已经被勾选。如果没勾选,这个文件不会被编译到测试目标里,自然不会被识别。
清理缓存并重建项目:Xcode的缓存有时候会抽风,试试按
Command + Shift + K清理项目,再按Command + B重新构建,甚至退出Xcode再打开,很多时候这种小问题重启重建就解决了。验证测试方法的访问级别:在Swift里,测试方法默认是
internal访问级别,这没问题,但如果你手动把它改成private,Xcode就无法识别到这个方法了。确保你的测试方法没有被设置成私有。检查测试Target的配置:打开测试Target的Build Settings,确认
Base SDK和主项目一致,Deployment Target符合Xcode 9的要求(Xcode 9最低支持iOS 8.0),另外Product Module Name要和测试Target的名称对应,避免模块名不匹配导致测试无法被发现。
举个正确的测试示例,你可以对比下自己的代码:
class UserAuthenticationTests: XCTestCase { func testInvalidLoginCredentials() { // 这里写测试逻辑,比如故意让断言失败 XCTAssertEqual("wrong", "correct", "这个测试应该失败") } }
按照上面的步骤排查,应该能让你的自定义测试出现那个小菱形标识,正常执行测试了。
内容的提问来源于stack exchange,提问作者Omar.Ebrahim

