Sto cercando di ottenere e invocare un metodo protetto che risiede in una classe diversa e anche un altro pacchetto che utilizza Java Reflection.Accesso al metodo protetto nel test case utilizzando Java Reflection
classe contenente metodo protetto:
package com.myapp;
public class MyServiceImpl {
protected List<String> retrieveItems(String status) {
// Implementation
}
}
classe Calling:
package xxx.myapp.tests;
import com.myapp.MyServiceImpl;
public class MyTestCase {
List<String> items;
public void setUp() throws Exception {
MyServiceImpl service = new MyServiceImpl();
Class clazz service.getClass();
// Fails at the next line:
Method retrieveItems = clazz.getDeclaredMethod("retrieveItems");
// How to invoke the method and return List<String> items?
// tried this but it fails?
retrieveItems.invoke(clazz, "S");
}
}
Il compilatore genera questa eccezione:
java.lang.NoSuchMethodException: com.myapp.MyServiceImpl.retrieveItems()
Grazie per aver il tempo di leggere questo.
+1 - questo è il problema che l'eccezione è segnalazione. Una volta che il metodo è stato recuperato, deve essere reso accessibile secondo la risposta di @jk. –