2017-05-28 95 views
2

我最近遇到了这样一种情况,我需要能够从现有的XCUITests桶而不是XCTest中检查UISwitch的当前开/关状态(而不是用户交互是否启用),并切换它达到预定的状态。我已经将应用程序状态恢复添加到旧的现有应用程序中,并且这现在干扰了预期UISwitch处于特定默认状态的运行之间的多个现有测试用例。从XCUITest中,我如何检查UISwitch的开/关状态?

与XCTest不同,在XCUITest中,您无法直接访问UISwitch状态。

这个状态是如何在Objective-C中为XCUITest确定的?

回答

4

未能在任何地方找到这个明显的我发生在这篇博客文章的Swift语言类似的情况。 Xcode UITests: How to check if a UISwitch is on

有了这些信息,我测试和验证了两种方法来解决我的问题。

1)断言如果状态是开启还是关闭

XCUIElement *mySwitch = app.switches[@"My Switch Storyboard Accessibility Label"]; 
// cast .value to (NSString *) and test for @"0" if off state 
XCTAssertEqualObjects((NSString *)mySwitch.value, @"0", @"Switch should be off by default."); // use @"1" to test for on state 

2)为了测试开关的状态是开还是关,然后切换其状态

XCUIElement *mySwitch = app.switches[@"My Switch Storyboard Accessibility Label"]; 
// cast .value to (NSString *) and test for @"0" if off state 
if (![(NSString *)mySwitch.value isEqualToString:@"0"]) 
     [mySwitch tap]; // tap if off if it is on 

使用的方法( 2),我可以在测试用例运行之间为所有UISwitch强制设置默认状态,并避免状态恢复干扰。