2011-09-07 35 views
8

私はいくつかの単体テストにArquillianを使用しようとしていますが、Mavenを使用して配備すると失敗する理由はわかりません。Arquillianテストを実行できません

これは、クラスのテストです:

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:サービス::にMBeanServerConnectを取得できませんJMX:RMI:/// 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> 

しかし、なぜarqullianがテストの実行を停止したのかわかりません。私が前に言ったように、彼らは設定の変更後に働いていましたか? Idk ....このエラーが表示され始めました。

は、念のためにテストは、次のコマンドを実行しました: MVNクリーンテスト-Parq-はJBossAS-リモート

おかげで多くのことを。

答えて

3

arquillian.xml内の属性jbossHomeは、として次のようになります。

D:\ JavaWindows \サーバー\ jboss-as-web-7.0.1.Final \ JBossの-AS-ウェブ-7.0.1。最終

1つのスラッシュの代わりに2つのスラッシュを追加する必要があります。

テストの実行前にjbossが7として動作しているかどうかを確認する必要があります。これは、REMOTEとして設定したためです。

1

コンテナのタイプ、つまりJBoss 7の管理対象またはリモートによって、ArquillianをJBossサーバーに接続するには、特定の構成を正しく設定する必要があります。

管理対象サーバの場合、ArquillianにJBossの場所を伝える必要があります。 managementAddress なmanagementport、

Arquillian使用:これは、システムプロパティとしてJBOSS_HOMEを設定することのいずれかによって行われ、またはリモートのJBoss容器の場合

をarquillian.xmlする「jbossHome」設定を追加することができ、Arquillianは2つの余分なパラメーターを必要デフォルトは127.0.0.1:9999です。サーバーが異なるホスト/ポートで実行されている場合は、2つのパラメーターをArquillianで構成する必要があります。次のリンクの下のxml

あなたは、JBoss 7またはJBossの5とArquillianテスト用sevrealランニングの例があります:

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

関連する問題