XCTAssertTrue本该失败却通过?Xcode单元测试异常求助
Xcode单元测试断言未执行、测试始终通过的原因及解决方法
你的测试代码存在两个核心问题,导致断言根本没被执行,所以测试才会“始终通过”:
- 测试容器类型错误:XCTest框架仅识别继承自
XCTestCase的类(class)作为测试类,你使用的结构体(struct)不会被框架扫描到,里面的方法自然不会被当作测试用例运行。 - 测试方法不符合规范:Swift中XCTest的测试方法需要以
test开头(如testExample),或者添加@objc标记并遵循命名规则。你用的@Test注解并非XCTest的合法标记,框架无法识别这个方法为测试用例。
修正后的代码示例:
import XCTest class MyUnitTest: XCTestCase { func testExample() throws { XCTAssertTrue("a" == "b") XCTAssertEqual("a", "b") } }
修改说明:
- 将
struct替换为继承自XCTestCase的class,符合XCTest的测试类要求 - 方法名改为
testExample(以test开头,框架自动识别为测试用例) - 移除无效的
@Test注解 - 确保导入
XCTest框架(若测试文件未导入)
修改后运行测试,断言会正常执行,因"a"与"b"不相等,测试会按预期失败。
内容的提问来源于stack exchange,提问作者Rob Bonner
相关产品推荐
相关产品推荐

