Ich teste (mit JUnit) einen Rest-Service und um sicherzustellen, dass alles wie vorgesehen läuft, muss ich einige EJB-Methoden verwenden. Sprich, ich habe:ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory beim Versuch, InitialContext zu laden
- die Klasse im Test, die hier nicht von Interesse ist;
Testklasse
public class UploadServiceTest { private final String RemoteBeanLookupKey = "/project/dao/TaskManager!ru.project.dao.TaskManager"; @EJB private TaskManager taskManager; @Before public void startEverythingNeeded() throws Exception { InitialContext ctx = null; Properties jndiProp = new Properties(); InputStream testConfStream = getClass().getClassLoader().getResourceAsStream("jndi.properties"); jndiProp.load(testConfStream); ctx = new InitialContext(jndiProp); taskManager = ((TaskManager) ctx.lookup(RemoteBeanLookupKey)); } @Test public void blablabla(){ } }
jndi.properties
java.naming.factory.initial = org.jboss.naming.remote.client.InitialContextFactory java.naming.provider.url = http-Remote: // localhost: 8080 remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS = false jboss.naming.client.ejb.context = true
remote.connection.default.username = admin remote.connection.default.password = admin
gradle Abhängigkeiten:
testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom'
,testCompile group: 'junit', name: 'junit', version: '4.11'
undprovided project(path: ':dao')
(dies ist das Modul ich will von EJB bekommen).
Aber wenn ich versuche, Test auszuführen, schlägt es mit javax.naming.NoInitialContextException: Cannot instantiate class: org.jboss.naming.remote.client.InitialContextFactory [Root exception is java.lang.ClassNotFoundException: org.jboss.naming.remote.client.InitialContextFactory]
Anderen ähnlichen Fragen hier und im Netz vorschlagen jboss-Client CLASSPATH hinzuzufügen, aber ich habe in README in der Nähe von Jboss sehe -client in meiner Distribution und es hieß, nicht so zu handeln und stattdessen eine Großzügigkeitsabhängigkeit herzustellen. So tat ich.
Eine weitere seltsame Sache: Ich habe Code und Eigenschaften von Tests zu einem anderen Modul im selben Projekt (von einem anderen Programmierer geschrieben). Ich habe versucht, diese Tests durchzuführen, und sie funktionieren wie beabsichtigt. Ich kopierte alles und noch mehr (Gradle-Abhängigkeit), aber bekomme diese Ausnahme.
Ich habe versucht, den Code zu vereinfachen, um zu veranschaulichen, habe ich etwas wichtiges fehlt. Bei Bedarf kann ich weitere Teile von Setup und Code kopieren.