Android 测试服务类时出错
这是在错误日志中运行我的测试类后发生的错误Android 测试服务类时出错,android,unit-testing,junit,Android,Unit Testing,Junit,这是在错误日志中运行我的测试类后发生的错误 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.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)
公共类Testappdata扩展ServiceTestCase{
公共数据{
超级(MainService.class);
}
受保护的void setUp()引发异常{
试一试{
super.setUp();
}捕获(例外e){
//TODO自动生成的捕捉块
e、 printStackTrace();
}
}
主要服务;
公共图书馆{
main=getService();
String Package=“com.android”;
Assert.assertNotNull(main.appData(包));
}
这是我的测试类。测试服务以获取数据值
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));
}
公共类MainService扩展服务{
私有最终静态字符串TAG=“设备智能”;
双lat=0.0;
双液化天然气=0.0;
列表地址=空;
字符串地址;
Handler mHandler=新的Handler();
字符串lPackAgeName,packAgeName=“”;
公共静态数据助理;
公共字符串appData(字符串pName){
PackageManager pm=getPackageManager();
试一试{
方法getPackageSizeInfo=pm.getClass().getMethod(
“getPackageSizeInfo”,String.class,
IPackageStatsObserver.class);
调用(pm,pName,
新的IPackageStatsObserver.Stub(){
公共无效ONGETSTATS已完成(成套设备、pStats、,
布尔值成功)引发RemoteException{
data_value=String.valueOf(pStats.dataSize/1024)
+“kb”;
Log.d(“错误”,“数据值:”+数据值);
}
});
}捕获(例外e){
e、 printStackTrace();
}
返回数据_值;
}
这是我的服务类。那么我如何才能清除我的错误。测试类中是否需要任何更改才能摆脱错误。提前感谢您的帮助。我假设NullPointerException来自以下行:
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;
}
希望这有帮助。第29行的Testappdata中有什么Assert.assertNotNull(main.appData(Package));这是第29行
... ...
public void testappd() {
main = getService(); // <-- Wrong at here, this will not return a testable service
String Package = "com.android";
Assert.assertNotNull(main.appData(Package)); // <-- throw NullPointerException
}
... ...
startService(new Intent(getContext(), MainService.class));
main = getService();
... ...