2016-03-01 88 views
1

我新来iOS开发。我想编写单元测试,它使用的SDK,其中在认证方法的形式为一个应用程序:iOS XCtest访问应用程序视图控制器/ UI

(void)authenticate:(UIViewController *)presentingViewController clearCookies:(BOOL)clearCookies completionBlock:(AuthCompletionBlock)completionBlock. 

对用户进行认证,嵌入式Web浏览器需要在UIViewController打开(在方法中传递参数)。单元可以测试访问应用程序UI吗? 如何确保浏览器打开,用户通过应用程序UI进行身份验证,然后执行单元测试。

+0

为此,您应该使用模拟数据输入您的验证方法。单元测试不访问ui。虽然有实际的UI测试,但也可以查看。 – hola

+0

同意hola。看看录制UI测试。过程非常简单和流畅。 看看它的行动:https://developer.apple.com/videos/play/wwdc2015/406/ –

回答

0

取决于你想要单元测试还是UI测试。

  • 单元测试:快速。是一致的。他们一步一步确认。但是他们不会端到端。
  • UI测试:慢。脆弱。他们确认端到端。

对于单元测试,您不会编写实际调出浏览器或以任何方式与之交互的测试。相反,你会编写测试调出浏览器,并测试模拟不同的输入从浏览器返回

只要您对来回沟通有信心,这种方法就行得通。如果是这样,则不需要测试Apple的代码。如果没有,那么你可以通过write a spike solution来了解通信。

+0

我其实需要编写单元测试,但登录我需要与浏览器交互的权利?是否存在与浏览器交互的非UI相关方式(输入用户信用和登录信息)? Xcode UI测试对于功能测试似乎非常有限。 – SKFelix

+0

我的意思是,单元测试不会通过网页登录。你会模拟开始它,并结束它。 –

+0

关于它的建议方法是什么?为此使用外部框架有多明智?说OCMock? – SKFelix