2012-03-13 17 views
0
java.lang.NullPointerException 
at com.android.deviceintelligence1.test.Testappdata.testappd(Testappdata.java:29) 
at java.lang.reflect.Method.invokeNative(Native Method) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:169) 
at android.test.AndroidTestRunner.runTest(AndroidTestRunner.java:154) 
at android.test.InstrumentationTestRunner.onStart(InstrumentationTestRunner.java:529) 
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1448) 

这是我的运行测试class.in错误日志后错误。错误测试服务类

public class Testappdata extends ServiceTestCase<MainService> { 

    public Testappdata() { 
     super(MainService.class); 
    } 

    protected void setUp() throws Exception { 
     try { 
      super.setUp(); 
     } catch (Exception e) { 
      // TODO Auto-generated catch block 
      e.printStackTrace(); 
     } 

    } 
    MainService main; 

    public void testappd() { 
     main = getService(); 
     String Package = "com.android"; 
     Assert.assertNotNull(main.appData(Package)); 

    } 

这是我的测试class.to测试服务来获取数据值。

public class MainService extends Service { 
private final static String TAG = "Device Intelligence"; 
double lat = 0.0; 
double lng = 0.0; 
List<Address> addresses = null; 
String addre; 
Handler mHandler = new Handler(); 
String lPackAgeName, packAgeName = ""; 
public static DataHelper dh; 

public String appData(String pName) { 
    PackageManager pm = getPackageManager(); 
    try { 

     Method getPackageSizeInfo = pm.getClass().getMethod(
       "getPackageSizeInfo", String.class, 
       IPackageStatsObserver.class); 
     getPackageSizeInfo.invoke(pm, pName, 
       new IPackageStatsObserver.Stub() { 
        public void onGetStatsCompleted(PackageStats pStats, 
          boolean succeeded) throws RemoteException { 
         data_value = String.valueOf(pStats.dataSize/1024) 
           + "kb"; 
         Log.d("bugs", "datavalue: " + data_value); 
        } 
       }); 
    } catch (Exception e) { 
     e.printStackTrace(); 
    } 
    return data_value; 
} 

这是我的服务class.so我怎样才能清除error.is疗法在测试类出去求救错误.thanks事先需要作出改变。

+2

还有什么在Testappdata第29行 – Android 2012-03-13 09:02:03

+0

Assert.assertNotNull(main.appData(包));这是第29行 – thej 2012-03-13 10:01:54

回答

2

我会假设NullPointerException异常来源于此行:

​​

正确的方式来获得一个可测试的服务是通过调用startService在ServiceTestCase类(意向)或bindService(意向书),检查出的API here

测试用例等待调用onCreate(),直到其中一个测试方法调用startService(Intent)或bindService(Intent)。这使您有机会在测试正在运行的服务之前设置或调整任何其他框架或测试逻辑。

假设你有一个正确的开始服务正常,你应该写你的测试代码是这样的:

startService(new Intent(getContext(), MainService.class)); 
main = getService(); 
... ... 

希望这有助于。