静的なfinalメソッド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;
}
ここで、where statemantの値としてnullを渡して、コードの後半で無視されるようにします。とにかく、このメソッドのテストケースには次のようなものがあります。
Vector<Category> categories = Category.getAll(context, null);
次に、NoSuchMethodErrorが発生します。なぜそうなるのか正確にはわかりません。私が想像できる唯一のことは、私が渡したnullが上記のメソッドのシグネチャと一致しないということです。しかし、どうすればこれを克服できますか?私はすでにオーバーロードについて考えました。しかし、これはほとんどのコードを書き直すことで終わります。少なくとも私がそれをするとき、私はどう思いますか。
それについて何か提案はありますか?
フィル
PSこれは私が取得したスタックトレースです:
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)