【问题标题】:XCTAssertTrue does not fail when testing iOS UIXCTAssertTrue 在测试 iOS UI 时不会失败
【发布时间】:2026-02-19 12:05:01
【问题描述】:

我正在测试一个别人写的计算器。我正在尝试使用 xcode 7 来测试所有基本功能。

这是我当前正在运行的不会失败的测试。我使用了新的录音功能来获得所有的按钮点击。但是,我不确定如何断言我返回的值是正确的。

- (void)testExample {
// Use recording to get started writing UI tests.

XCUIApplication *app = [[XCUIApplication alloc] init];
[app.buttons[@"6"] tap];
[app.buttons[@"+"] tap];
[app.buttons[@"3"] tap];
[app.buttons[@"="] tap];

//what the equation should return (9 in this case)
XCUIElement *display = app.staticTexts[@"199"];
XCTAssertTrue(display);

//what the equation should look like (6 + 3 in this case)
display = app.staticTexts[@"222+5553"];
XCTAssertTrue(display);

}

【问题讨论】:

    标签: ios objective-c xcode-ui-testing


    【解决方案1】:

    您基本上想检查带有该标签 exists 的 XCUIElement:

    XCTAssertTrue(display.exists)
    

    【讨论】:

      【解决方案2】:

      XCTAssertTrue 不会测试一个值是否等于另一个值,如果这是您所期望的。

      XCTAssertTrue 测试除 0 (nil) 以外的任何值。你的display 不是零;因此它是真的并且测试通过了。

      【讨论】:

      • 那么我应该将我的显示转换为 int 并将值与 XCTAssertEquals 进行比较吗?我试过这样做,但我不知道如何将 XCUIElement 转换为 int。
      • 我还没弄清楚你认为你在做什么或想要做什么,你也没有解释它。所以我已经解释了你的问题,即为什么你的测试总是通过。