【发布时间】:2010-10-01 13:43:25
【问题描述】:
我有一个带有静态最终方法 getAll 的 Java 类:
public static final Vector<Category> getAll(Context context, ContentValues where) {
ArrayList<Integer> IDs = null;
if(where != null && where.containsKey(DatabaseAdapter.KEY_PRODUCT)) {
IDs = OvertureItem.getAll(context, DatabaseAdapter.TABLE_PRODUCT_CATEGORY, new String[] { DatabaseAdapter.KEY_CATEGORY }, where);
} else {
IDs = OvertureItem.getAll(context, DatabaseAdapter.TABLE_CATEGORIES, where);
}
Vector<Category> categories = new Vector<Category>();
for(Integer id: IDs) {
categories.add(Category.get(context, id));
}
return categories;
}
现在我想将 null 作为 where 语句的值提交,以便稍后在代码中忽略它。无论如何,在这种方法的测试用例中,我有:
Vector<Category> categories = Category.getAll(context, null);
这反过来又给了我一个 NoSuchMethodError。我不知道它为什么这样做。我唯一能想象的是,我提交的 null 与上述方法的签名不匹配。但是我该如何克服呢?我已经考虑过重载。但这只会以重写大部分代码而告终。至少当我这样做的时候,我是怎么想的。
对此有何建议?
菲尔
附:这是我得到的堆栈跟踪:
java.lang.NoSuchMethodError: com.sap.catalogue.model.Category.getAll
at com.sap.overture.test.model.CategoryTest.testGetAll(CategoryTest.java:59)
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:430)
at android.app.Instrumentation$InstrumentationThread.run(Instrumentation.java:1447)
【问题讨论】:
-
查看logcat输出。异常是否由其他故障引起,例如验证错误?
标签: java android junit method-signature