2017-09-06 2 views
-1

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' und provided 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.

Antwort

0

Ich habe die Abhängigkeit von ejb-Client von testCompile group: 'org.wildfly', name: 'wildfly-ejb-client-bom', version: '8.2.0.Final', ext: 'pom' zu testCompile 'org.wildfly:wildfly-ejb-client-bom:10.0.0.Final' geändert und es begann zu arbeiten. Nicht sicher, ob es hilfreich ist.

Verwandte Themen