Jboss Seam 2、Hibernate/JPaなどを使用するWebプロジェクトでArquillianを設定しようとしています。私は次のコードの平和を挿入し、私のpom.xmlを更新:Arquillian、Tomcat、Jboss Seam 2
<dependencyManagement>
<dependencies>
<!-- https://mvnrepository.com/artifact/org.jboss.arquillian/arquillian-bom -->
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.13.Final</version>
<type>pom</type>
</dependency>
</dependencies>
</dependencyManagement>
...
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-core</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-jasper</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.apache.tomcat.embed</groupId>
<artifactId>tomcat-embed-logging-juli</artifactId>
<version>7.0.42</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.eclipse.jdt.core.compiler</groupId>
<artifactId>ecj</artifactId>
<version>3.7</version>
<scope>provided</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian.container</groupId>
<artifactId>arquillian-tomcat-embedded-7</artifactId>
<version>1.0.0</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.shrinkwrap.resolver/shrinkwrap-resolver-impl-maven -->
<dependency>
<groupId>org.jboss.shrinkwrap.resolver</groupId>
<artifactId>shrinkwrap-resolver-impl-maven</artifactId>
<version>2.2.6</version>
<scope>test</scope>
</dependency>
<!-- https://mvnrepository.com/artifact/org.jboss.arquillian.junit/arquillian-junit-container -->
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<version>1.1.13.Final</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>${junit.version}</version>
<scope>test</scope>
</dependency>
をので、第二段階は、後に、私のpom.xmlに依存関係を追加Arquillianテストクラスを作成しました、参照:
package com.projectx;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.seam.annotations.In;
import org.jboss.shrinkwrap.api.Archive;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.jboss.shrinkwrap.api.spec.WebArchive;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.projectx.MyService;
@RunWith(Arquillian.class)
public class MyServiceTest {
@Deployment
public static JavaArchive createTestArchive() {
JavaArchive jar = ShrinkWrap.create(JavaArchive.class).addPackages(true, "com.projectx");
return jar;
}
@In
private MyService myService;
@Test
public void validateValue() {
ReturnBean returnBean = myService.validateNow(null);
}
}
は最終的に私は私のテストクラスを実行しようと、私は「MYSERVICE」オブジェクトがnullであることを指摘し、注入するポイントは動作しませんでしたので、私はNullPointerExceptionが得ました。
私は、ShrinkWrapを使用してJavaArchiveに必要なものをすべて挿入しているわけではありません。とにかく、メイヴェンが作ったのと同じように、私の戦争をアキレウスで創り出すことはありますか?
編集1: 私は私のpom.xmlに以下の依存関係を追加しました:
<dependency>
<groupId>org.jboss.arquillian.extension</groupId>
<artifactId>arquillian-seam2</artifactId>
<version>1.0.0.Beta1</version>
</dependency>
をそしてarquillian-seam2とcompabilityので、この依存関係は怒鳴るバージョンを変更:
<dependency>
<groupId>org.jboss.arquillian.junit</groupId>
<artifactId>arquillian-junit-container</artifactId>
<version>1.1.1.Final</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.jboss.arquillian</groupId>
<artifactId>arquillian-bom</artifactId>
<version>1.1.1.Final</version>
<type>pom</type>
</dependency>
しかし、私はテストを開始しようとすると、私は次のエラーがあります:
GRAVE: Exception sending context initialized event to listener instance of class org.jboss.seam.servlet.SeamListener
java.lang.IllegalStateException: duplicate factory for: org.jboss.seam.web.webSession (duplicate is specified in components.xml)
at org.jboss.seam.core.Init.checkDuplicateFactoryExpressions(Init.java:227)
at org.jboss.seam.core.Init.checkDuplicateFactory(Init.java:220)
at org.jboss.seam.core.Init.addFactoryValueExpression(Init.java:283)
at org.jboss.seam.init.Initialization.installComponents(Initialization.java:1152)
at org.jboss.seam.init.Initialization.init(Initialization.java:737)
at org.jboss.seam.servlet.SeamListener.contextInitialized(SeamListener.java:36)
at org.apache.catalina.core.StandardContext.listenerStart(StandardContext.java:4939)
at org.apache.catalina.core.StandardContext.startInternal(StandardContext.java:5434)
at org.apache.catalina.util.LifecycleBase.start(LifecycleBase.java:150)
at org.apache.catalina.core.ContainerBase.addChildInternal(ContainerBase.java:901)
at org.apache.catalina.core.ContainerBase.addChild(ContainerBase.java:877)
at org.apache.catalina.core.StandardHost.addChild(StandardHost.java:633)
at org.apache.catalina.startup.HostConfig.deployWAR(HostConfig.java:976)
at org.apache.catalina.startup.HostConfig$DeployWar.run(HostConfig.java:1653)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:441)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:303)
at java.util.concurrent.FutureTask.run(FutureTask.java:138)
at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
at java.lang.Thread.run(Thread.java:662)
解決策: 私のコンテナをapache-tomcatからjboss-as-5.1に変更しました。
私はここでテストして返されます、ありがとう。 – RonaldoLanhellas
私はarquillian-seam2拡張子をputtedしましたが、編集した投稿にエラーが報告されました。手伝って頂けますか ? – RonaldoLanhellas
確かに、私は小さな再生プロジェクトが必要でしょう。このようなことを準備してGitHubで共有できますか? –