2011-09-07 17 views
8

Estoy tratando de usar Arquillian para algunas pruebas de unidad, sin embargo, no puedo encontrar por qué fallan cuando se implementan con Maven.No se pueden ejecutar las pruebas arquillian

Esta es la prueba de la clase:

package com.ndeveloper.spec.test; 

import javax.inject.Inject; 

import junit.framework.Assert; 

import org.jboss.arquillian.container.test.api.Deployment; 
import org.jboss.arquillian.junit.Arquillian; 
import org.jboss.shrinkwrap.api.ArchivePaths; 
import org.jboss.shrinkwrap.api.ShrinkWrap; 
import org.jboss.shrinkwrap.api.asset.ByteArrayAsset; 
import org.jboss.shrinkwrap.api.spec.JavaArchive; 
import org.junit.Test; 
import org.junit.runner.RunWith; 

import com.ndeveloper.spec.controller.GreetingBean; 

@RunWith(Arquillian.class) 
public class GreetingBeanTest { 

@Inject 
GreetingBean greetingBean; 

@Deployment 
public static JavaArchive createTestArchive() 
{ 
    return ShrinkWrap.create(JavaArchive.class,"test.jar"). 
      addClass(GreetingBean.class).addAsManifestResource(
        new ByteArrayAsset("<beans/>".getBytes()), 
        ArchivePaths.create("beans.xml")); 

} 

@Test 
public void testInjection(){ 
    Assert.assertEquals("Hello World", greetingBean.getGreeting());  
} 
} 

y estoy usando el arquetipo JBoss jboss- javaee6-webapp. Lo extraño es que originalmente la prueba funcionó bien ... Sin embargo, después de usar varias veces. El siguiente error comenzó a aparecer:

Las pruebas realizadas en el error: com.ndeveloper.spec.test.GreetingBeanTest: No se puede obtener a MBeanServerConnect: Servicio: jmx: RMI: /// jndi/RMI: //127.0.0.1 : 1090/jmxrmi

el informe segura dice lo siguiente:

------------------------------------------------------------------------------- 
Test set: com.ndeveloper.spec.test.GreetingBeanTest 
------------------------------------------------------------------------------- 
Tests run: 1, Failures: 0, Errors: 1, Skipped: 0, Time elapsed: 1.309 sec <<< FAILURE! 
com.ndeveloper.spec.test.GreetingBeanTest Time elapsed: 0 sec <<< ERROR! 
java.lang.IllegalStateException: Cannot obtain MBeanServerConnection to: service:jmx:rmi:///jndi/rmi://127.0.0.1:1090/jmxrmi 
at org.jboss.as.arquillian.container.MBeanServerConnectionProvider.getConnection(MBeanServerConnectionProvider.java:64) 
at org.jboss.as.arquillian.container.remote.RemoteDeployableContainer.getMBeanServerConnection(RemoteDeployableContainer.java:66) 
at org.jboss.as.arquillian.container.remote.RemoteDeployableContainer.startInternal(RemoteDeployableContainer.java:52) 
at org.jboss.as.arquillian.container.CommonDeployableContainer.start(CommonDeployableContainer.java:88) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$5.perform(ContainerLifecycleController.java:144) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$5.perform(ContainerLifecycleController.java:134) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forContainer(ContainerLifecycleController.java:182) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.startContainer(ContainerLifecycleController.java:133) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) 
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) 
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) 
at org.jboss.arquillian.container.impl.client.ContainerDeploymentContextHandler.createContainerContext(ContainerDeploymentContextHandler.java:57) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) 
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) 
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$2.perform(ContainerLifecycleController.java:83) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController$2.perform(ContainerLifecycleController.java:76) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.forEachContainer(ContainerLifecycleController.java:175) 
at org.jboss.arquillian.container.impl.client.container.ContainerLifecycleController.startContainers(ContainerLifecycleController.java:75) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) 
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) 
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) 
at org.jboss.arquillian.core.impl.EventImpl.fire(EventImpl.java:67) 
at org.jboss.arquillian.container.test.impl.client.ContainerEventController.execute(ContainerEventController.java:83) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) 
at org.jboss.arquillian.core.impl.EventContextImpl.invokeObservers(EventContextImpl.java:99) 
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:81) 
at org.jboss.arquillian.test.impl.TestContextHandler.createSuiteContext(TestContextHandler.java:54) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.jboss.arquillian.core.impl.ObserverImpl.invoke(ObserverImpl.java:90) 
at org.jboss.arquillian.core.impl.EventContextImpl.proceed(EventContextImpl.java:88) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:134) 
at org.jboss.arquillian.core.impl.ManagerImpl.fire(ManagerImpl.java:114) 
at org.jboss.arquillian.test.impl.EventTestRunnerAdaptor.beforeSuite(EventTestRunnerAdaptor.java:68) 
at org.jboss.arquillian.junit.Arquillian.run(Arquillian.java:76) 
at org.apache.maven.surefire.junit4.JUnit4TestSet.execute(JUnit4TestSet.java:35) 
at org.apache.maven.surefire.junit4.JUnit4Provider.executeTestSet(JUnit4Provider.java:115) 
at org.apache.maven.surefire.junit4.JUnit4Provider.invoke(JUnit4Provider.java:97) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) 
at java.lang.reflect.Method.invoke(Method.java:597) 
at org.apache.maven.surefire.booter.ProviderFactory$ClassLoaderProxy.invoke(ProviderFactory.java:103) 
at $Proxy0.invoke(Unknown Source) 
at org.apache.maven.surefire.booter.SurefireStarter.invokeProvider(SurefireStarter.java:150) 
at org.apache.maven.surefire.booter.SurefireStarter.runSuitesInProcess(SurefireStarter.java:91) 
at org.apache.maven.surefire.booter.ForkedBooter.main(ForkedBooter.java:69) 
    Caused by: java.io.IOException: Failed to retrieve RMIServer stub:        javax.naming.ServiceUnavailableException [Root exception is    java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
java.net.ConnectException: Connection refused: connect] 
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:338) 
at javax.management.remote.JMXConnectorFactory.connect(JMXConnectorFactory.java:248) 
at org.jboss.as.arquillian.container.MBeanServerConnectionProvider.getConnection(MBeanServerConnectionProvider.java:60) 
... 69 more 
    Caused by: javax.naming.ServiceUnavailableException [Root exception is java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
java.net.ConnectException: Connection refused: connect] 
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:101) 
at com.sun.jndi.toolkit.url.GenericURLContext.lookup(GenericURLContext.java:185) 
at javax.naming.InitialContext.lookup(InitialContext.java:392) 
at javax.management.remote.rmi.RMIConnector.findRMIServerJNDI(RMIConnector.java:1886) 
at javax.management.remote.rmi.RMIConnector.findRMIServer(RMIConnector.java:1856) 
at javax.management.remote.rmi.RMIConnector.connect(RMIConnector.java:257) 
... 71 more 
    Caused by: java.rmi.ConnectException: Connection refused to host: 127.0.0.1; nested exception is: 
java.net.ConnectException: Connection refused: connect 
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:601) 
at sun.rmi.transport.tcp.TCPChannel.createConnection(TCPChannel.java:198) 
at sun.rmi.transport.tcp.TCPChannel.newConnection(TCPChannel.java:184) 
at sun.rmi.server.UnicastRef.newCall(UnicastRef.java:322) 
at sun.rmi.registry.RegistryImpl_Stub.lookup(Unknown Source) 
at com.sun.jndi.rmi.registry.RegistryContext.lookup(RegistryContext.java:97) 
... 76 more 
    Caused by: java.net.ConnectException: Connection refused: connect 
at java.net.PlainSocketImpl.socketConnect(Native Method) 
at java.net.PlainSocketImpl.doConnect(PlainSocketImpl.java:351) 
at java.net.PlainSocketImpl.connectToAddress(PlainSocketImpl.java:213) 
at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:200) 
at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:366) 
at java.net.Socket.connect(Socket.java:529) 
at java.net.Socket.connect(Socket.java:478) 
at java.net.Socket.<init>(Socket.java:375) 
at java.net.Socket.<init>(Socket.java:189) 
at sun.rmi.transport.proxy.RMIDirectSocketFactory.createSocket(RMIDirectSocketFactory.java:22) 
at sun.rmi.transport.proxy.RMIMasterSocketFactory.createSocket(RMIMasterSocketFactory.java:128) 
at sun.rmi.transport.tcp.TCPEndpoint.newSocket(TCPEndpoint.java:595) 
... 81 more 

Y por último, mi arquillian.xml está configurado de esta manera:

<?xml version="1.0" encoding="UTF-8"?> 
<arquillian xmlns="http://jboss.org/schema/arquillian" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://jboss.org/schema/arquillian 
    http://jboss.org/schema/arquillian/arquillian_1_0.xsd"> 

<!-- Uncomment to have test archives exported to the file system for inspection --> 
<!-- <engine> --> 
<!--  <property name="deploymentExportPath">target/</property> --> 
<!-- </engine> --> 

<!-- Example configuration for a remote JBoss AS 7 instance --> 
<container qualifier="jboss" default="true"> 
    <protocol type="jmx-as7"> 
    <property name="executionType">REMOTE</property> 
    </protocol> 
    <configuration> 
    <property name="jbossHome">D:\JavaWindows\servers\jboss-as-web-7.0.1.Final\jboss-as-web-7.0.1.Final</property> 
    </configuration> 
</container> 

Sin embargo, no puedo entender por qué arqullian dejó de ejecutar las pruebas. Como te dije antes, ¿solían trabajar sin embargo después de que cambiasen las configuraciones? Idk ... este error comenzó a aparecer.

Sólo en caso de la prueba se realizaron con el siguiente comando: MVN ensayo limpio -Parq-jbossas-remotas

muchas gracias.

Respuesta

3

El atributo jbossHome en el arquillian.xml debe ser lo más:

D: \ JavaWindows \ servidores \ jboss-as-web-7.0.1.Final \ jboss-as-web-7.0.1. Final

Debe agregar dos barras en lugar de una barra inclinada.

Verificará si su jboss como 7 se está ejecutando antes de la ejecución de las pruebas. Esto se debe a que configuró como REMOTO.

1

Depende del tipo de contenedor, es decir, JBoss 7 administrado o remoto, debe tener ciertas configuraciones configuradas correctamente, para hacer que Arquillian se conecte al servidor JBoss.

En el caso del servidor administrado, debe decirle a Arquillian dónde encontrar el JBoss. Esto podría hacerse, ya sea mediante el establecimiento de JBOSS_HOME como las propiedades del sistema, o añadir "jbossHome" configuración para arquillian.xml

En caso de recipiente JBoss remoto, Arquillian necesita 2 parámetros adicionales: managementAddress managementPort,

uso Arquillian predeterminado 127.0.0.1:9999. Si su servidor se ejecuta en un host/puerto diferente, entonces los 2 parámetros se deben configurar en arquillian.xml

Bajo siguiente enlace encontrará ejemplos de funcionamiento sevreal para realizar la prueba Arquillian con JBoss 7 o JBoss 5:

http://milestonenext.blogspot.de/2012/12/ejb3-integration-test-with-arquillian.html

Cuestiones relacionadas