How can I call methods in app code from XCTestCase (UI Test Case)

时间:2016-09-25 03:20:46

标签: ios swift xctest

I have UI XCTestCases (XCUITests) that perform some gestures. Our performance tests need to be able to call startMeasuring and stopMeasuring depending on the state of the app.

We have methods in our app code that return a BOOL value depending on whether it has completed rendering everything and I need to read that value.

How can I call those methods in our app?

1 个答案:

答案 0 :(得分:1)

简短版:你不应该,但我想你可以尝试传递信号。

更长的版本:UI测试的一个主要(虽然可能是哲学)点是它们只评估传递给用户的那个,或者至少评估用户可见的视图/辅助功能层次结构。不支持使用信号传递或其他方法来处理旁道信息,这违背了测试框架的美学。

相反,您可以通过等待特定UI元素上的.Hittable谓词来评估是否所有内容都已完成呈现;或者如果你有一些元素只有在页面加载完成后才能进行交互(一种常见的模式),你可以等待那些改变状态。

有很多不同的方法可以解决这个问题,但是"对"答案是找到一些可以评估用户可见的方式。

...或者,在视图层次结构中有一个不可见的UI元素,它根据所讨论的布尔值改变状态,如果你想要的东西只是有效并且不关心哲学。