2016-05-26 7 views
0

Ich möchte die Codeabdeckung meiner Integrationstests überprüfen. Ich habe einige REST-Dienste implementiert und sie auf Wildly 9.0.2 bereitgestellt. Dann habe ich die Berichterstattung in IntelliJ mit IDEA Coverage Runner für die Unterstützung der Ablaufverfolgung konfiguriert. Wenn ich jetzt Wildfly mit Abdeckung der Einsatz des Krieges schlägt mit der folgenden Strack Spur starten:Coverage Integrationstests IntelliJ on Wildfly

16:20:53,103 ERROR [org.jboss.msc.service.fail] (MSC service thread 1-7) MSC000001: Failed to start service jboss.deployment.unit."myservice-war-1.0.0-SNAPSHOT.war".INSTALL: org.jboss.msc.service.StartException in service jboss.deployment.unit."myservice-war-1.0.0-SNAPSHOT.war".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment "myservice-war-1.0.0-SNAPSHOT.war" 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:163) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.startService(ServiceControllerImpl.java:1948) 
at org.jboss.msc.service.ServiceControllerImpl$StartTask.run(ServiceControllerImpl.java:1881) 
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) 
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) 
at java.lang.Thread.run(Thread.java:745) 
Caused by: java.lang.NoClassDefFoundError: com/intellij/rt/coverage/data/ProjectData 
at de.akquinet.ats.myservice.rest.services.MyUpdateService.<clinit>(MyUpdateService.java) 
at java.lang.Class.forName0(Native Method) 
at java.lang.Class.forName(Class.java:348) 
at org.jboss.invocation.proxy.AbstractProxyFactory.afterClassLoad(AbstractProxyFactory.java:95) 
at org.jboss.invocation.proxy.AbstractClassFactory.defineClass(AbstractClassFactory.java:166) 
at org.jboss.invocation.proxy.AbstractProxyFactory.getCachedMethods(AbstractProxyFactory.java:150) 
at org.jboss.as.ejb3.component.stateless.StatelessComponentDescription$3.configure(StatelessComponentDescription.java:150) 
at org.jboss.as.ee.component.DefaultComponentViewConfigurator.configure(DefaultComponentViewConfigurator.java:67) 
at org.jboss.as.ee.component.deployers.EEModuleConfigurationProcessor.deploy(EEModuleConfigurationProcessor.java:81) 
at org.jboss.as.server.deployment.DeploymentUnitPhaseService.start(DeploymentUnitPhaseService.java:156) 
... 5 more 
Caused by: java.lang.ClassNotFoundException: com.intellij.rt.coverage.data.ProjectData from [Module "deployment.myservice-war-1.0.0-SNAPSHOT.war:main" from Service Module Loader] 
at org.jboss.modules.ModuleClassLoader.findClass(ModuleClassLoader.java:205) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassUnchecked(ConcurrentClassLoader.java:455) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClassChecked(ConcurrentClassLoader.java:404) 
at org.jboss.modules.ConcurrentClassLoader.performLoadClass(ConcurrentClassLoader.java:385) 
at org.jboss.modules.ConcurrentClassLoader.loadClass(ConcurrentClassLoader.java:130) 
... 15 more 

    16:20:53,106 ERROR [org.jboss.as.controller.management-operation] (management-handler-thread - 2) WFLYCTL0013: Operation ("deploy") failed - address: ([("deployment" => "myservice-war-1.0.0-SNAPSHOT.war")]) - failure description: { 
    "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment \"myservice-war-1.0.0-SNAPSHOT.war\" 
    Caused by: java.lang.NoClassDefFoundError: com/intellij/rt/coverage/data/ProjectData 
    Caused by: java.lang.ClassNotFoundException: com.intellij.rt.coverage.data.ProjectData from [Module \"deployment.myservice-war-1.0.0-SNAPSHOT.war:main\" from Service Module Loader]"}, 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [ 
     "jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".batch.environment is missing [jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".beanmanager]", 
     "jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".beanmanager]" 
    ] 
} 
    16:20:53,107 ERROR [org.jboss.as.server] (management-handler-thread - 2) WFLYSRV0021: Deploy of deployment "myservice-war-1.0.0-SNAPSHOT.war" was rolled back with the following failure message: 
{ 
    "WFLYCTL0080: Failed services" => {"jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".INSTALL" => "org.jboss.msc.service.StartException in service jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".INSTALL: WFLYSRV0153: Failed to process phase INSTALL of deployment \"myservice-war-1.0.0-SNAPSHOT.war\" 
    Caused by: java.lang.NoClassDefFoundError: com/intellij/rt/coverage/data/ProjectData 
    Caused by: java.lang.ClassNotFoundException: com.intellij.rt.coverage.data.ProjectData from [Module \"deployment.myservice-war-1.0.0-SNAPSHOT.war:main\" from Service Module Loader]"}, 
    "WFLYCTL0180: Services with missing/unavailable dependencies" => [ 
     "jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".batch.environment is missing [jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".beanmanager]", 
     "jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".weld.weldClassIntrospector is missing [jboss.deployment.unit.\"myservice-war-1.0.0-SNAPSHOT.war\".beanmanager]" 
    ] 
} 

Ich benutze IntelliJ IDEA 2016.01.02 Build # IU-145,972, am 14. Mai gebaut 2016 JRE: 1.8.0_76-release-b162 x86_64 JVM: OpenJDK 64-Bit Server VM von JetBrains sro

bin ich voll und ganz bewusst, was ein ClassNotFoundException ist und in der Regel wissen, was dann zu tun, aber hier bin ich stecken ...

Kann jemand bitte helfen?

+0

Das gleiche gilt hier: IntelliJ 2016.1.3, JRE 1.8.0_91 Verwenden Sie Ubuntu auch als Betriebssystem? – MoYapro

+0

Nein, ich benutze OS X El Capitan (Version 10.11.5 (15F34)) – Martin

+0

Ich habe es geschafft, dass Coverage funktioniert, indem ich in den Run-Einstellungen auf der Registerkarte Code Coverage einen anderen Coverage-Runner auswähle. – MoYapro

Antwort

0

Derzeit ist es nicht posible IntelliJ IDEA Deckungsmittel zu verwenden, weil org.wildfly.arquillian: Wildfly-Arquillian-Container eingebetteten: 2.0.0.Final keine Eigenschaft hat Systempakete für die Einstellung (jboss.modules.system.pkgs Systemeigenschaft).

Der einzige Weg, IntelliJ IDEA Deckungsmittel zu verwenden ist, zu modifizieren EmbeddedContainerConfiguration und EmbeddedDeployableContainer Klassen, und dann müssen Sie diese benutzerdefinierten Klassen verwenden.

Ich habe bereits eine Pull-Anfrage gemacht, ich hoffe, dass die neue Version sehr bald verfügbar sein wird.

public class EmbeddedContainerConfiguration extends CommonContainerConfiguration { 

    private String systemPackages = System.getProperty("jboss.modules.system.pkgs"); 

    public String getSystemPackages() { 
     return systemPackages; 
    } 

    public void setSystemPackages(String systemPackages) { 
     this.systemPackages = systemPackages; 
    } 

    public String[] getSystemPackagesArray() { 
     return (systemPackages == null || systemPackages.isEmpty()) ? null : systemPackages.split(","); 
    } 

} 


public final class EmbeddedDeployableContainer extends CommonDeployableContainer<EmbeddedContainerConfiguration> { 

    @Override 
    public void setup(final EmbeddedContainerConfiguration config) { 
     super.setup(config); 
     if (config.getCleanServerBaseDir() != null) { 
      SecurityActions.setSystemProperty(EmbeddedStandaloneServerFactory.JBOSS_EMBEDDED_ROOT, config.getCleanServerBaseDir()); 
     } 
     final String[] cmdArgs = getCommandArgs(config); 
     server = EmbeddedProcessFactory.createStandaloneServer(config.getJbossHome(), config.getModulePath(), config.getSystemPackagesArray(), cmdArgs); 
    } 

}