2010-11-28 63 views
9

ActivityUnitTestCase的JavaDoc它说:ActivityUnitTestCase和startActivity

不要从您的设置()方法调用。您必须从每种测试方法调用此方法。

是不是把东西在每个测试方法相当于把它在setUp,考虑到该方法背后的整个想法是能够做到这一点,即每次测试之前执行的东西吗?

另外,为什么我们不允许这样做?我试过了,它工作得很好。

+0

在正确调整的测试装备中,是的;您可以测试的任何代码(包括您需要评估的断言)都可以自由地重构setUp和setUp。然而,在Android测试平台中,... – Phlip 2014-06-22 17:16:47

回答

3

似乎setUp与测试项目的类加载器一起运行,而实际的测试方法与测试的应用程序的类加载器一起运行。见,例如,RoboGuice邮件列表上的讨论:

http://groups.google.com/group/roboguice/browse_thread/thread/2e129f87ead10b10

为什么是这样的话,我不知道(这似乎是一个很奇怪的设计决定对我来说)。但结果是你无法在你的setUp方法中访问被测试应用中的任何东西。其中移动设置成巧克力茶壶领土。

注意,这里描述的,如果你正在测试库项目此限制不适用:

http://www.paulbutcher.com/2010/09/android-library-project-with-tests-step-by-step/

因为在这种情况下,试验和测试的代码都在一个单一的应用程序。

-1

我认为他们认为这更像是一种“最佳实践”,而不是一个硬性和快速的技术原因(注:我可能是错的)。原因是,如果每个单独的测试方法本质上都是独立的,那么创建不同的测试套件将更容易,它们将执行您需要的EXACT测试,而不是在setUp()中的ActivityTestCase中运行每个测试。