2011-09-07 14 views
8

मैं कुछ यूनिट परीक्षणों के लिए आर्किलीयन का उपयोग करने की कोशिश कर रहा हूं, हालांकि मुझे नहीं पता कि वे मेवेन का उपयोग करते समय तैनात क्यों विफल हो जाते हैं।आर्किलीयन परीक्षण नहीं चला सकते

इस कक्षा की परीक्षा है:

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());  
} 
} 

और मैं jboss jboss-javaee6-webapp मूलरूप आदर्श उपयोग कर रहा हूँ। अजीब बात यह है कि मूल रूप से परीक्षण ठीक काम करता था ... हालांकि कई बार उनका उपयोग करने के बाद। त्रुटि में

टेस्ट:: com.ndeveloper.spec.test.GreetingBeanTest: सेवा: JMX: RMI: करने के लिए MBeanServerConnect नहीं प्राप्त कर सकता /// JNDI/RMI: निम्न त्रुटि प्रकट करने के लिए शुरू कर दिया //127.0.0.1 : 1090/jmxrmi

अचूक रिपोर्ट में कहा गया है:

------------------------------------------------------------------------------- 
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 

और अंत में मेरी arquillian.xml इस तरह कॉन्फ़िगर किया गया है:

<?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> 

हालांकि मुझे पता नहीं लगा कि आर्कुलीयन ने परीक्षण क्यों चलाना बंद कर दिया है। जैसा कि मैंने आपको पहले बताया था, हालांकि सेटिंग्स बदलने के बाद वे काम करते थे ?? इडक .... यह त्रुटि प्रकट होने लगी।

शायद ज़रुरत पड़े परीक्षण निम्न आदेश के साथ चलाने गया: mvn स्वच्छ परीक्षण -Parq-jbossas-दूरस्थ

धन्यवाद एक बहुत।

उत्तर

3

विशेषता arquillian.xml में jbossHome होना चाहिए के रूप में:

डी: \ JavaWindows \ सर्वर \ jboss-as-web-7.0.1.Final \ jboss के रूप में वेब 7.0.1। अंतिम

आपको एक स्लैश के बजाय दो स्लैश जोड़ना चाहिए।

आप सत्यापित करेंगे कि परीक्षण के निष्पादन से पहले आपका जेबॉस 7 चल रहा है या नहीं। ऐसा इसलिए है क्योंकि आप रिमोट के रूप में कॉन्फ़िगर किया गया है।

1

कंटेनर के प्रकार, यानी जेबॉस 7 प्रबंधित या रिमोट पर निर्भर करता है, आपको आर्किबिलियन जेबॉस सर्वर से कनेक्ट करने के लिए, कुछ कॉन्फ़िगरेशन सही तरीके से सेट अप करने की आवश्यकता है।

प्रबंधित सर्वर के मामले में आपको आर्किलीयन को जेबॉस खोजने के लिए कहने की आवश्यकता है। यह या तो JBOSS_HOME प्रणाली गुण के रूप में स्थापित करने के द्वारा किया जा सकता है, या "jbossHome" जोड़ने के विन्यास

arquillian.xml करने के लिए दूरस्थ JBoss कंटेनर के मामले में, Arquillian 2 अतिरिक्त पैरामीटर की जरूरत है: managementAddress managementPort,

Arquillian उपयोग डिफ़ॉल्ट 127.0.0.1:99 99। यदि आपका सर्वर अलग मेजबान/पोर्ट पर चल रहा है, तो 2 पैरामीटर arquillian में कॉन्फ़िगर किया जाना चाहिए।एक्सएमएल

लिंक का पालन के तहत आप JBoss 7 या JBoss 5 के साथ Arquillian टेस्ट के लिए sevreal चल उदाहरण मिल जाएगा:

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

संबंधित मुद्दे