Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/image/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
用Arquillian测试JavaEE微服务_Java_Ejb_Wildfly_Jboss Arquillian - Fatal编程技术网

用Arquillian测试JavaEE微服务

用Arquillian测试JavaEE微服务,java,ejb,wildfly,jboss-arquillian,Java,Ejb,Wildfly,Jboss Arquillian,我是arquillian的新手 我们在Wildfly 10.1.0下构建了一个微服务。我们开发了一个依赖于SessionBean的“WAR”。SessionBean被开发为一个“JAR”。SessionBean的接口被开发为一个额外的“JAR”,并添加为一个“WildFly模块”。我的问题是我必须用arquillian构建一个测试。我使用的是托管wildfly,但我的错误是在arquillian的“test.war”中找不到接口类 如何从arquillian开发“test.war”,并依赖于Wi

我是arquillian的新手

我们在Wildfly 10.1.0下构建了一个微服务。我们开发了一个依赖于SessionBean的“WAR”。SessionBean被开发为一个“JAR”。SessionBean的接口被开发为一个额外的“JAR”,并添加为一个“WildFly模块”。我的问题是我必须用arquillian构建一个测试。我使用的是托管wildfly,但我的错误是在arquillian的“test.war”中找不到接口类

如何从arquillian开发“test.war”,并依赖于WildFly模块

myTestClass

    package com.example.controller.dataConnector;

import javax.inject.Inject;
import org.jboss.arquillian.container.test.api.Deployment;
import org.jboss.arquillian.junit.Arquillian;
import org.jboss.shrinkwrap.api.ShrinkWrap;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.jboss.shrinkwrap.api.spec.JavaArchive;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import com.example.controller.global.Global;
import com.example.ejb.interfaces.SessionBeanLogic_Interface;
import com.example.model.dataModel1;
import com.example.model.dataModel2;


@RunWith(Arquillian.class)
public class dataConnectorTest
{
    @Inject
    dataConnector dataConnector;


    @Deployment
    public static JavaArchive createShrinkWrap()
    {
        return ShrinkWrap.create(JavaArchive.class).addClasses(dataConnector.class, Global.class, dataModel1.class, dataModel2.class, SessionBeanLogic_Interface.class).addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
    }

    @Test
    public void should_say_hello()
    {
        Assert.assertEquals("Testversuch", dataConnector.getStr_Value());
        System.out.println(siebeldaten.getStr_Value());
    }
}
MyArquillian.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">
    <container qualifier="wildfly10" default="true">
        <configuration>
            <property name="jbossHome">F:/jboss/wildfly-10.1.0.Final</property>
        </configuration>
</container>
</arquillian>

F:/jboss/wildfly-10.1.0.Final
myPOM.xml

<?xml version="1.0" encoding="UTF-8"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>com.example</groupId>
    <artifactId>DataFrontend</artifactId>
    <version>1.0-SNAPSHOT</version>
    <packaging>war</packaging>

    <name>DataFrontend</name>

    <properties>
        <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
        <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    </properties>

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.jboss.arquillian</groupId>
                <artifactId>arquillian-bom</artifactId>
                <version>1.1.12.Final</version>
                <scope>import</scope>
                <type>pom</type>
            </dependency>
        </dependencies>
    </dependencyManagement>

    <dependencies>
        <dependency>
            <groupId>${project.groupId}</groupId>
            <artifactId>EJB_Logic_Interface</artifactId>
            <version>${project.version}</version>
        </dependency>
        <dependency>
            <groupId>org.primefaces</groupId>
            <artifactId>primefaces</artifactId>
            <version>6.0</version>
        </dependency>
        <dependency>
            <groupId>com.sun.faces</groupId>
            <artifactId>jsf-impl</artifactId>
            <version>2.2.14</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
        </dependency>
        <dependency>
            <groupId>javax</groupId>
            <artifactId>javaee-web-api</artifactId>
            <version>7.0</version>
            <scope>provided</scope>
        </dependency>
        <dependency>
            <groupId>com.google.code.gson</groupId>
            <artifactId>gson</artifactId>
            <version>2.8.0</version>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.junit</groupId>
            <artifactId>arquillian-junit-container</artifactId>
        </dependency>  
        <dependency>
            <groupId>org.wildfly.arquillian</groupId>
            <artifactId>wildfly-arquillian-container-managed</artifactId>
            <version>2.0.0.Final</version>
        </dependency> 
    </dependencies>

    <build>
        <plugins>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.8</source>
                    <target>1.8</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-war-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <failOnMissingWebXml>false</failOnMissingWebXml> 
                </configuration>
            </plugin>            
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-ejb-plugin</artifactId>
                <version>2.3</version>
                <configuration>
                    <ejbVersion>3.1</ejbVersion>
                    <archive>
                        <manifestEntries>
                            <Dependencies>com.example.Interfaces.Logic_Interface, com.example.gson.280</Dependencies>
                        </manifestEntries>
                    </archive>
                </configuration>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-dependency-plugin</artifactId>
                <version>2.6</version>
                <executions>
                    <execution>
                        <phase>validate</phase>
                        <goals>
                            <goal>copy</goal>
                        </goals>
                        <configuration>
                            <outputDirectory>${endorsed.dir}</outputDirectory>
                            <silent>true</silent>
                            <artifactItems>
                                <artifactItem>
                                    <groupId>javax</groupId>
                                    <artifactId>javaee-endorsed-api</artifactId>
                                    <version>7.0</version>
                                    <type>jar</type>
                                </artifactItem>
                            </artifactItems>
                        </configuration>
                    </execution>
                </executions>
            </plugin>
        </plugins>
    </build>
    <repositories>
        <repository>
            <url>http://repository.primefaces.org/</url>
            <id>PrimeFaces-maven-lib</id>
            <layout>default</layout>
            <name>Repository for library PrimeFaces-maven-lib</name>
        </repository>
    </repositories>
</project>

4.0.0
com.example
数据前端
1.0-快照
战争
数据前端
${project.build.directory}/project
UTF-8
org.jboss.arquillian
阿奎利安bom
1.1.12.最终版本
进口
聚甲醛
${project.groupId}
EJB\u逻辑接口
${project.version}
org.primefaces
素面
6
com.sun.faces
jsf impl
2.2.14
朱尼特
朱尼特
4.12
爪哇
javaeewebapi
7
假如
com.google.code.gson
格森
2.8.0
org.jboss.arquillian.junit
arquillian junit容器
org.wildfly.arquillian
wildfly arquillian容器管理
2.0.0.1决赛
org.apache.maven.plugins
maven编译器插件
3.1
1.8
1.8
${annowed.dir}
org.apache.maven.plugins
maven战争插件
2.3
假的
org.apache.maven.plugins
maven ejb插件
2.3
3.1
com.example.Interfaces.Logic_Interface,com.example.gson.280
org.apache.maven.plugins
maven依赖插件
2.6
验证
复制
${annowed.dir}
真的
爪哇
javaee认可的api
7
罐子
http://repository.primefaces.org/
PrimeFacesMaven库
违约
库PrimeFaces maven lib的存储库

您需要将
dataConnector
实现的接口添加到
包覆面提取。创建(…).addClasses(…)
,而不仅仅是您的
dataConnector


Arquillian使用在
@Deployment
注释方法中显式添加的任何内容,它不会从maven自动解析依赖项。

“但是我犯了一个错误,在Arquillian的“test.war”中找不到接口类。”。请在问题中添加完整的错误。如果一个微服务包含一个巨大的应用服务器,完整的stacktrace肯定会帮助我们解决这个问题?