XCUITest:调用的测试函数中的断言不起作用
Posted
技术标签:
【中文标题】XCUITest:调用的测试函数中的断言不起作用【英文标题】:XCUITest: Assertions in called test functions not working 【发布时间】:2016-01-29 10:37:13 【问题描述】:是否可以使用有效的 XCTest 断言从另一个测试用例调用测试函数?
-(void)testExample
XCUIApplication *app = [[XCUIApplication alloc] init];
TestLoginMethod *loginModule = [[TestLoginMethod alloc] init:app];
[loginModule testExampleLogin];
我想编写测试模块以便于重用或以不同的顺序调用它们。 但是我在被调用函数中的 XCTAssert 如果为假,则不会中止测试。
- (void)testExampleLogin
XCUIElement *passwordSecureTextField = app.secureTextFields[@"Passwordaadsfs"];
XCTAssertTrue([passwordSecureTextField exists]);
XCTAssertTrue([passwordSecureTextField isHittable]);
在被调用的函数中,XCTAssertTrue 只是被跳过了,尽管这个文本字段不存在。
【问题讨论】:
测试用例应该是独立的。在你的情况下 id 制作:----(void)testExample [loginModuleHelper login]; -(void) testExampleLogin [loginModuleHelper login]; ... -(void) login XCUIElement *passwordSecureTextField = app.secureTextFields[@"Passwordaadsfs"]; XCTAssertTrue([passwordSecureTextField exists]); XCTAssertTrue([passwordSecureTextField isHittable]);
您可能会发现关于线程 link 的讨论很有用。
【参考方案1】:
与其将共享逻辑放入测试中,不如将该逻辑分解为非测试函数,即:
- (void) login
// Do login
XCTAssert(YES);
- (void) testLogin
[self login];
- (void) testExample
[self login];
// do some other stuff
XCTAssert(YES);
当您从其他测试中调用以 test 开头的函数时,Xcode 会遇到问题,但不在乎您在非测试函数中是否有通用测试逻辑。
【讨论】:
以上是关于XCUITest:调用的测试函数中的断言不起作用的主要内容,如果未能解决你的问题,请参考以下文章
单击 XCUITest 中的按钮后,如何验证和断言是不是正在播放动画?
Xcode 11 Export for Localization 不起作用,Include Screenshots 功能被禁用,并且在测试日志中找不到 XCUITest 屏幕截图附件