Android测试 - 无法设置正确的配置

时间:2014-09-14 13:44:12

标签: java android unit-testing testing

我是一款Android应用,我想为它创建测试用例。

我已经阅读了Android Dev的文档中的文档,并尝试了很多东西......

这是我的应用的主要结构:enter image description here

我通过ALT + ENTER在编辑器中的SadAppTest类上创建了SadApp extends Application类,然后选择Create Test选项,请参阅:

enter image description here

这里是生成的测试类的代码:

package com.procode.saveadog;

import android.test.ApplicationTestCase;

/**
 * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a>
 */
public class SadAppTest extends ApplicationTestCase<SadApp> {
    public SadAppTest() {
        super(SadApp.class);
    }
}

我尝试添加一个简单的测试,测试SadApp类中的某些内容。在文档中,我读到我应该通过getActivity()函数在代码中获取Application对象。

我创建了一个非常简单的测试,它从Application类询问用户的UUID,并比较给定的UUID是否相同。代码:

public void testUserUuid(){
    assertEquals(getApplication().getUserId(), getApplication().getUserId());
}

但是这个测试会引发NullPointerException

    java.lang.NullPointerException
    at com.example.myapp.SadAppTest.testUserUuid(SadAppTest.java:14)
    at java.lang.reflect.Method.invokeNative(Native Method)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:191)
    at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:176)
    at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:554)
    at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1701)

正好getActivity()方法返回null,因为这个测试运行良好:

public void testUserUuid(){
    assertTrue(getApplication() == null);
}

我错过了什么?

1 个答案:

答案 0 :(得分:0)

请参阅getApplication()之前需要调用createApplication()的ApplicationTestCase个文档:

  

在测试调用之前,测试用例不会调用onCreate()   createApplication()。这使您有机会设置或调整任何   onCreate()之前的其他框架或测试逻辑。