2012-03-13 9 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)); 

    } 

これは私のテストクラスです。データ値を取得するためのサービスをテストします。

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; 
} 

これは私のサービスは、私が事前に助けのためのエラー.thanksから抜け出すためにテストクラスに必要な変更THER私error.isをクリアすることができますどのようにclass.soです。

+2

TestAppdataの29行目にあるもの – Android

+0

Assert.assertNotNull(main.appData(Package));これは29行目です – thej

答えて

2

私はNullPointerExceptionがこの行から来ていると仮定します:

​​

検証可能なサービスを取得するための正しい方法は、あなたのServiceTestCaseクラスでSTARTSERVICE(意図)またはbindService(意図)のいずれかを呼び出すことである、APIをチェックアウトhere

テストケースは、テスト方法の一つはSTARTSERVICE(インテント)またはbindService(インテント)を呼び出すまでのonCreate()をコールするのを待ちます。これにより、実行中のサービスをテストする前に、追加のフレームワークまたはテストロジックを設定または調整する機会が与えられます。

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

・ホープ、このことができます:

はあなたが正しく、適切な開始サービスがあると、あなたは、このようなコードの何かをテスト書き込む必要があります。