我是一款Android应用,我想为它创建测试用例。
我已经阅读了Android Dev的文档中的文档,并尝试了很多东西......
这是我的应用的主要结构:
我通过ALT + ENTER在编辑器中的SadAppTest
类上创建了SadApp extends Application
类,然后选择Create Test选项,请参阅:
这里是生成的测试类的代码:
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);
}
我错过了什么?
答案 0 :(得分:0)
请参阅getApplication()之前需要调用createApplication()的ApplicationTestCase个文档:
在测试调用之前,测试用例不会调用onCreate() createApplication()。这使您有机会设置或调整任何 onCreate()之前的其他框架或测试逻辑。