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

时间:2017-05-27 19:59:55

标签: objective-c xcode8 uipickerview xcode-ui-testing

我遇到了一种情况,我无法获得包含UIPickerView的视图控制器的XCUITest,而无需生成断言。引起断言的问题显然是由于XCUITest使用的可访问性功能将伪造的“1个n”附加到每个选择器值。

这一行就像测试期间断言一样简单

POST

这是Xcode的一个已知错误,并且有一个开放的雷达Cannot use UI Testing to adjust pickerView which uses a view-based delegate

这是我的问题,就像我使用viewForRow:delegate一样,以便在选择器值中使用属性字符串。使用titleForRow:delegate的替代方案不会出现问题。

我试图通过手动设置辅助功能信息解决此问题,但无济于事。

由于我的客户对属性文本的要求,我不能考虑使用titleForRow:delegate。

然而又是困境,为所有观点提供完整的XCUITests作为另一个客户要求。

有哪些可行的解决方法?

1 个答案:

答案 0 :(得分:0)

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

显然没有明确的解决方案。

我满足所有客户端要求的解决方案是创建一个名为“Testing”的附加构建配置,该配置从“Debug”复制,以便我可以定义一个新的预处理器宏XCUITEST。然后在Test下编辑方案以使用这个新的构建配置,而不是DEBUG或RELEASE。

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

@api_view(['GET', 'POST'])
def ObjectList(request):

    if request.method == 'POST':
        serializer = ObjectSerializer(data=request.data)
        if serializer.is_valid():
            serializer.save()
            return Response(serializer.data, status=status.HTTP_201_CREATED)
        return Response(serializer.errors, status=status.HTTP_400_BAD_REQUEST)