2016-02-19 67 views
4

我曾经asked a question related to XCTests。在其中一个答案中,我被告知,在运行单元测试时(至少在iOS开发中),使用单独的测试主机(除主应用程序之外)是一种常见做法。我试图找到一些关于它的来源,但我不能为什么我应该使用单独的测试主机来运行XCTests,我应该怎么做?

我明白,这可能是一个最佳实践,所以我很想了解它。有人可以向我解释为什么它很重要,我从中得到什么好处,我应该怎么做呢?一些文章链接解释这个问题将不胜感激。

P.S.我知道我需要特殊的测试环境(虚假内存数据库,模拟网络层等),但直到现在,我还是设法在没有单独的测试主机的情况下实现它,只需使用我的主应用程序,就像Xcode建议的那样默认。但我相信可能有更好的办法。而且我知道Xcode建议的默认值并不总是那么好。

+0

**如果您认为以前曾见过这种情况:**我已经提出了[与非常非常相似的文本问题](http://stackoverflow.com/questions/35506605/why-应该-I-使用-A-独立测试,目标为运行-xctests和知识,应该-I-DO)。但是由于我的错误,它是关于一个单独的测试目标,而不是一个单独的测试主机。如果你想知道为什么我保留这个问题并创建了一个新的问题,[这是一个元问题,解释我的理由](http://meta.stackoverflow.com/questions/317294/i-was-given-a-good-回答,但是,当时的发现 - 即最的问题 - 是 - 错什么-SH#317294)。 – FreeNickname

+0

我建议做一些研究。在Interwebs上有很多这方面的... – matt

+0

@matt,我总是试图首先找到自己的答案,但是这次我不成功,不幸的是。很难找到有关使用单独测试主机的信息。大多数文章都关注如何将单元测试添加到现有项目,XCTests(Equal,EqualObjects等)以及其他所有可用的不同功能。这就是为什么我在这里寻求帮助。 – FreeNickname

回答

4

理由使用不同的主机应用的单元测试:

  1. 没有主要的应用程序,因为你的目标是一个图书馆。
  2. 当主应用程序启动时,它会经历其启动过程。这需要很长时间。

原因1几乎是给定的。但是理由2呢?

我的方法是使用主应用程序,但在测试过程中使用不同的应用程序委托。这样我就不必维护一个单独的应用程序,只需要一个备用的启动过程。请参阅How to Easily Switch Your App Delegate for Testing

+0

使用单独的应用程序委托是有道理的,这样我就不必让两台主机(主应用程序和测试主机)保持同步。谢谢! – FreeNickname

相关问题