使用JUnit,在测试用例中访问Application类

时间:2014-05-14 00:53:55

标签: android unit-testing junit

我在JUnit中测试我的全局应用程序。 我已成功设置我的应用程序,

public classs TestApplication extends ApplicationTestCase<SomeApplication> {
   private SomeApplication app;
   public TestApplication(String name) {
       super(SomeApplication.class);
       setName(name);
   }

   @Override
   public void setUp() throws Exception {
       super.setUp();
       createApplication();
       app = getApplication();
   }
}

我的问题是,如何在测试用例活动中访问TestApplication,如

public class ActivityTest extends ActivityInstrumentationTestCase2<SomeActivity> {

}

另外,您如何访问SomeApplication的方法?

1 个答案:

答案 0 :(得分:0)

您提供的两个代码段不能一起工作。这是两个独立的测试用例,旨在彼此独立运行。

ActivityInstrumentationTestCase的方法是getActivity(),它返回你的Activity,它也是一个Context。该上下文有getApplicationContext(),可以强制转换为您的Application子类。

这就是您在ActivityInstrumentationTestCase中访问它的方法。其中有自己的设置和拆卸方法被覆盖。实际测试以您创建的方法运行,该方法以&#39; test&#39;开头,如

testSomeApplication() {}

ActivityInstrumentationTestCase更适用于集成和功能测试,而不是单元测试。您正在测试的设备实际上将运行您的应用程序,启动到您将测试用例设置为的活动(在这种情况下为SomeActivity)。

更多的单元测试&#34;在您的Application子类中,您可以使用ApplicationTestCase。在这种情况下访问应用程序实例非常简单:

getApplication()

http://developer.android.com/reference/android/test/ApplicationTestCase.html#getApplication()