Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/objective-c/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Objective c XCUITest使用adjustToPickerWheelValue:&&;viewForRow:委托导致断言_Objective C_Xcode8_Uipickerview_Xcode Ui Testing - Fatal编程技术网

Objective c XCUITest使用adjustToPickerWheelValue:&&;viewForRow:委托导致断言

Objective c XCUITest使用adjustToPickerWheelValue:&&;viewForRow:委托导致断言,objective-c,xcode8,uipickerview,xcode-ui-testing,Objective C,Xcode8,Uipickerview,Xcode Ui Testing,我遇到了这样一种情况,在没有生成断言的情况下,我无法让包含UIPickerView的视图控制器的XUITest正常工作。导致断言的问题显然是由于XCUITest使用的可访问性功能将虚假的“1/n”附加到每个选择器值 像这一行这样简单的东西将在测试期间断言 [app.pickers.pickerWheels.element adjustToPickerWheelValue:@"ANYVALUE"]; 这是一个已知的Xcode错误,并且有一个开放的雷达 这正是我的问题所在,因为我使用viewFor

我遇到了这样一种情况,在没有生成断言的情况下,我无法让包含UIPickerView的视图控制器的XUITest正常工作。导致断言的问题显然是由于XCUITest使用的可访问性功能将虚假的“1/n”附加到每个选择器值

像这一行这样简单的东西将在测试期间断言

[app.pickers.pickerWheels.element adjustToPickerWheelValue:@"ANYVALUE"];
这是一个已知的Xcode错误,并且有一个开放的雷达

这正是我的问题所在,因为我使用viewForRow:delegate在选择器值中使用属性字符串。另一种方法是使用titleForRow:delegate,它不会出现问题

我试图通过手动设置辅助功能信息来解决这个问题,但没有效果

我不能考虑使用TwiteFord:委托,因为我的客户对属性文本的要求。 然而,作为另一个客户需求,还需要为所有视图提供完整的XSuite


有哪些可行的解决方法?

这是Xcode中的一个已知错误,它已经被打开了很长一段时间,至少可以追溯到2015年

显然没有解决办法

我满足所有客户机需求的解决方案是创建一个名为“Testing”的附加构建配置,该配置从“Debug”复制而来,这样我就可以定义一个新的预处理器宏xguitest。然后编辑测试下的方案以使用此新构建配置,而不是调试或发布

通过此更改,我可以合并用于XC测试的代理,同时保留满足客户端应用程序要求的代理,如下所示:

#ifndef XCUITEST  // for release or debug we use this method as we want attributed text strings
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

// blah blah

}
#endif

#ifdef XCUITEST  // for testing we have to use this method so XCUITests will work with adjustToPickerWheelValue:
- (UIView *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

// blah blah

}
#endif 

这是Xcode中的一个已知错误,它已经被打开了很长一段时间,至少可以追溯到2015年

显然没有解决办法

我满足所有客户机需求的解决方案是创建一个名为“Testing”的附加构建配置,该配置从“Debug”复制而来,这样我就可以定义一个新的预处理器宏xguitest。然后编辑测试下的方案以使用此新构建配置,而不是调试或发布

通过此更改,我可以合并用于XC测试的代理,同时保留满足客户端应用程序要求的代理,如下所示:

#ifndef XCUITEST  // for release or debug we use this method as we want attributed text strings
- (UIView *)pickerView:(UIPickerView *)pickerView viewForRow:(NSInteger)row forComponent:(NSInteger)component reusingView:(UIView *)view {

// blah blah

}
#endif

#ifdef XCUITEST  // for testing we have to use this method so XCUITests will work with adjustToPickerWheelValue:
- (UIView *)pickerView:(UIPickerView *)pickerView titleForRow:(NSInteger)row forComponent:(NSInteger)component {

// blah blah

}
#endif