标签: jboss-arquillian

JUnit @Ignore所有其他测试(@IgnoreOther?)

我正在使用JUnit进行广泛测试,有时候 - 在调试我的代码时 - 我想(临时)只运行@Test我的一个@RunWith(Arquillian.class)测试类.目前我正在添加一个@Ignore到所有其他测试,并想知道是否@IgnoreOther存在类似的东西.

是否有更好的解决方案忽略所有其他测试?

java junit junit4 jboss-arquillian

11
推荐指数
3
解决办法
5060
查看次数

如何从arquillian.xml中通过qualifyer选择容器?

我希望在arquillian.xml中有不同的容器配置,并在我的测试中选择它们.但我无法加载任何容器,但默认加载.

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

    <container qualifier="weld" default="false">
    </container>
</arquillian>
Run Code Online (Sandbox Code Playgroud)

测试用例:

@Deployment(name="depl1")
@TargetsContainer("weld")
public static JavaArchive createTestArchive() throws UnsupportedEncodingException {
    return ShrinkWrap
            .create(JavaArchive.class, "test.jar")
            .addClasses(SomeOtherCdiService.class)
            .addAsManifestResource(new ByteArrayAsset(beansXmlContent.getBytes("utf-8")), ArchivePaths.create("beans.xml"));
}

@Test
@OperateOnDeployment("depl1")
public void shouldBeAbleToInjectInject() {
    assertNotNull(someOtherCdiService);
}
Run Code Online (Sandbox Code Playgroud)

但测试没有开始,因为Arquilian找不到容器

org.jboss.arquillian.container.test.impl.client.deployment.ValidationException:DeploymentScenario包含与注册表中任何已定义Container不匹配的目标.焊接.可能的原因是:在Classpath上找不到可部署的容器,或者您已经使用@ org.jboss.arquillian.container.test.api.TargetsContainer值定义了@ org.jboss.arquillian.container.test.api.Deployment.任何找到/配置的容器(请参阅arquillian.xml容器@限定符)

我查看了源代码,发现Aquilian只找到了_DEFAULT_Container.

当我@TargetsContainer("weld")从部署方法中删除时,测试工作正常.所以我认为一般测试都没问题.

如果我将容器配置修改为default="true"(<container qualifier="weld" default="ture">)然后测试工作,测试也有效,所以我认为配置文件已加载.

有没有人知道出了什么问题?


细节

完成Stacktrace:

org.jboss.arquillian.container.test.impl.client.deployment.ValidationException:
DeploymentScenario contains targets not matching any defined Container in the registry. weld.
Possible causes are: No Deployable …
Run Code Online (Sandbox Code Playgroud)

java testing java-ee cdi jboss-arquillian

11
推荐指数
2
解决办法
1万
查看次数

与Arquillian和Wildfly的集成测试

我尝试与Arquillian和Wildfly进行集成测试.

我在Maven中的依赖关系如下:

<dependency>
  <groupId>org.jboss.arquillian</groupId>
  <artifactId>arquillian-bom</artifactId>
  <version>1.1.2.Final-wildfly-1</version>
  <type>pom</type>
  <scope>import</scope>
</dependency>
<dependency>
  <groupId>org.jboss.arquillian.junit</groupId>
  <artifactId>arquillian-junit-container</artifactId>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.wildfly</groupId>
  <artifactId>wildfly-arquillian-container-embedded</artifactId>
  <version>8.0.0.Final</version>
  <scope>test</scope>
</dependency>
<dependency>
  <groupId>org.wildfly</groupId>
  <artifactId>wildfly-embedded</artifactId>
  <version>8.0.0.Final</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

是否有必要同时包括wildfly-arquillian-container-embedded和wildfly-embedded?

运行测试时,我收到以下错误:

[main] DEBUG org.jboss.logging - Logging Provider: org.jboss.logging.Slf4jLoggerProvider
Cannot not load JBoss LogManager. The LogManager has likely been accessed prior to this initialization.
[main] INFO  org.jboss.msc - JBoss MSC version 1.2.0.Final
Feb 18, 2014 11:34:08 AM org.jboss.as.server.ApplicationServerService start
INFO: JBAS015899: WildFly 8.0.0.Final "WildFly" starting
Feb 18, 2014 11:34:13 AM org.jboss.as.controller.AbstractOperationContext executeStep
ERROR: JBAS014612: Operation …
Run Code Online (Sandbox Code Playgroud)

junit jboss-arquillian wildfly

11
推荐指数
1
解决办法
4739
查看次数

使用Maven依赖项构建路径问题(jconsole-jdk.jar)

我切换到Wildfly 8.1并且无法解决这个构建(路径)问题,这个问题最终会受到arquillian测试框架的影响.

pom.xml:

<properties>
    <endorsed.dir>${project.build.directory}/endorsed</endorsed.dir>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <version.org.jboss.arquillian>1.1.5.Final</version.org.jboss.arquillian>
    <version.org.wildfly>8.1.0.Final</version.org.wildfly>
    <version.junit>4.11</version.junit>
</properties>

<profiles>
    <profile>
        <id>arquillian-jbossas-remote</id>
        <dependencies>
            <dependency>
                <groupId>org.wildfly</groupId>
                <artifactId>wildfly-arquillian-container-remote</artifactId>
                <version>${version.org.wildfly}</version>
                <scope>test</scope>
            </dependency>
        </dependencies>
    </profile>
</profiles>

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>${version.org.jboss.arquillian}</version>
            <scope>import</scope>
            <type>pom</type>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>${version.junit}</version>
        </dependency>
    </dependencies>
</dependencyManagement>

<dependencies>
    <dependency>
        <groupId>org.jboss.logging</groupId>
        <artifactId>jboss-logging</artifactId>
        <version>3.1.4.GA</version>
        <scope>provided</scope>
    </dependency>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.protocol</groupId>
        <artifactId>arquillian-protocol-servlet</artifactId>
        <scope>test</scope>
    </dependency>
</dependencies>

<build>
    <pluginManagement>
        <plugins>
            <plugin>
                <artifactId>maven-surefire-plugin</artifactId>
                <version>2.17</version>
            </plugin>
            <plugin>
                <groupId>org.apache.maven.plugins</groupId>
                <artifactId>maven-compiler-plugin</artifactId>
                <version>3.1</version>
                <configuration>
                    <source>1.7</source>
                    <target>1.7</target>
                    <compilerArguments>
                        <endorseddirs>${endorsed.dir}</endorseddirs>
                    </compilerArguments>
                </configuration> …
Run Code Online (Sandbox Code Playgroud)

java eclipse maven jboss-arquillian

11
推荐指数
2
解决办法
1万
查看次数

使用Arquillian进行CDI测试

3天前,我完成了Arquillian"入门"指南,并认为这对我的CQRS系统的单元测试是一件好事.

不幸的是,事实证明这比直接前进要少.我用google搜索了过去3天的问题,这个问题没有得到任何适用于其他人的解决方案的解决.

我得出结论,问题是我的代码,虽然我没有看到如何.

我的任务是编写一个事件监听器,监听ActiveMQ主题的事件,然后更新Mongo DB中的"视图".

系统中会有很多事件,所以创建一个所有事件监听器都扩展的抽象基类似乎是合理的.

此基类包含Mongo客户端和寄存器以侦听主题.它使用过载的getter作为侦听器名称,它在camel路由中用作bean引用.侦听器客户机ID是从静态长度生成的,该静态长度在每次侦听器注册时递增.这可确保每个侦听器都能看到发布到主题的每个事件.意图是稍后添加过滤器以减少收到的事件数.

我已经构建了这个代码,并从一个生成事件主题帖子的计时器驱动它,一切正常.

麻烦就是质量要求让cobertura通过单元测试报告80%的代码覆盖率.

我的测试应用程序不是单元测试,因此我的代码覆盖率为0%.

我通过CDI中的其他一些单元测试方法来到Arquillian,但如果我只能让它工作,Arquillian似乎是最好的选择.

我得到的错误是:

java.lang.IllegalStateException: Could not find beans for Type=class org.apache.deltaspike.core.impl.scope.window.WindowBeanHolder and qualifiers:[]
Run Code Online (Sandbox Code Playgroud)

我在pom中包含了deltaspike,我已经将它添加到了shrinkwrap部署中

POM提取物

<dependency>
    <groupId>org.apache.deltaspike.core</groupId>
    <artifactId>deltaspike-core-api</artifactId>
    <version>${deltaspike.version}</version>
</dependency>

<dependency>
    <groupId>org.apache.deltaspike.core</groupId>
    <artifactId>deltaspike-core-impl</artifactId>
    <version>${deltaspike.version}</version>
</dependency>

<dependency>
    <groupId>org.jboss.shrinkwrap.resolver</groupId>
    <artifactId>shrinkwrap-resolver-impl-maven</artifactId>
    <version>2.0.0</version>
</dependency>
Run Code Online (Sandbox Code Playgroud)

测试类@RunWith(Arquillian.class)公共类ListenerTest {

    AbstractEventListener listener = null ;
    WindowBeanHolder w = new WindowBeanHolder();

    @Deployment
    public static WebArchive createDeployment() {
        return ShrinkWrap.create(WebArchive.class).addAsLibraries(Maven.resolver().loadPomFromFile("pom.xml")
        .resolve("org.apache.deltaspike.core:deltaspike-core-api",
                 "org.apache.deltaspike.core:deltaspike-core-impl")
        .withoutTransitivity().asFile())
        .addAsWebInfResource("beans.xml");
}


    @Test
    public void testExecute() {
        Assert.assertNotNull(listener);
    }
}
Run Code Online (Sandbox Code Playgroud)

我的beam.xml

<?xml version="1.0" encoding="UTF-8"?>
    <beans xmlns="http://xmlns.jcp.org/xml/ns/javaee"
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xsi:schemaLocation="http://xmlns.jcp.org/xml/ns/javaee …
Run Code Online (Sandbox Code Playgroud)

junit cdi jboss-arquillian

11
推荐指数
1
解决办法
891
查看次数

嵌入式Glassfish,安全性和Arquillian问题

我想使用Arquillian在嵌入式Glassfish上测试我的EJB.

重要的是我必须保持安全性,因为我的bean逻辑执行一些编程安全检查(sessionContext.isCallerInRole(role)).

是否可以在嵌入式Glassfish上使用Arquillian模拟登录?

如何设置Embedded Glassfish以使用用户和角色属性文件?

[编辑]

我找到了一个帖子,我决定遵循的方向(http://community.jboss.org/message/580290),但我仍然遇到问题.

1我arquillian.xml没被拿起
2我收到有关@Resource SessionContext
3的警告我无法获得正在运行的服务器的实例

SRC /测试/资源/ arquillian.xml:

<arquillian xmlns="http://jboss.com/arquillian" 
   xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
   xmlns:glassfish="urn:arq:org.jboss.arquillian.container.glassfish.embedded_3">

    <glassfish:container>
        <glassfish:bindHttpPort>9090</glassfish:bindHttpPort>
        <glassfish:instanceRoot>src/test/glassfish</glassfish:instanceRoot>
        <glassfish:autoDelete>true</glassfish:autoDelete>
    </glassfish:container>

</arquillian>
Run Code Online (Sandbox Code Playgroud)

我的测试:

@RunWith(Arquillian.class)
public class ArquillianTestCase {

    @Deployment
    public static JavaArchive createDeployment() {
        final JavaArchive jar = ShrinkWrap.create(JavaArchive.class, "test.jar")
                .addClasses(FileBrowser.class, FileBrowserBean.class).addAsResource("META-INF/ejb-jar.xml")
                .addAsResource("META-INF/glassfish-ejb-jar.xml");
        return jar;
    }

    @EJB
    private FileBrowser fileBrowser;

    @Test
    public void setupSecurity() throws Exception {
        GlassfishTestHelper.createFileUser("user1", "xxx", "role1");
    }

    @Test
    public void testLoadConfiguration() throws Exception {
        final boolean loggedIn …
Run Code Online (Sandbox Code Playgroud)

security java-ee glassfish-embedded jboss-arquillian

10
推荐指数
1
解决办法
3236
查看次数

缺少神器"sun.jdk:jconsole:jar:jdk"

将Arquillian添加到Maven构建时,我在Eclipse中获得了上述异常:

缺少神器sun.jdk:jconsole:jar:jdk

    <dependency>
        <groupId>org.jboss.arquillian.junit</groupId>
        <artifactId>arquillian-junit-container</artifactId>
        <version>1.1.7.Final</version>
    </dependency>
    <dependency>
        <groupId>org.jboss.arquillian.extension</groupId>
        <artifactId>arquillian-persistence-dbunit</artifactId>
        <version>1.0.0.Alpha7</version>
    </dependency>
Run Code Online (Sandbox Code Playgroud)

(消息不是问题,但Eclipse因为它而拒绝编译项目.不过Maven工作.)

当然,我做的第一件事就是尝试将其从Maven依赖项中排除(wildfly-arquillian-container-managed依赖树声明依赖性来自哪里):

    <dependency>
        <groupId>org.wildfly</groupId>
        <artifactId>wildfly-arquillian-container-managed</artifactId>
        <exclusions>
            <exclusion>
                <artifactId>jconsole</artifactId>
                <groupId>sun.jdk</groupId>
            </exclusion>
        </exclusions>
    </dependency> 
Run Code Online (Sandbox Code Playgroud)

没有变化.我尝试用Eclipse启动Eclipse -vm C:\Program Files\Java\jdk1.8.0_60\bin.并尝试在"首选项 - >已安装的JRE"中编辑JDK,以在工具目录中包含JAR.但没有任何作用.

我能做什么?

eclipse maven jboss-arquillian wildfly

10
推荐指数
3
解决办法
1万
查看次数

Stream API不适用于EclipseLink/Glassfish中延迟加载的集合?

在检测到我的某个Web服务中存在缺陷后,我将错误跟踪到以下单行:

return this.getTemplate().getDomains().stream().anyMatch(domain -> domain.getName().equals(name));
Run Code Online (Sandbox Code Playgroud)

当我肯定地知道域名列表包含一个名称等于提供的域名时,该行返回false name.所以在我搔了一会儿之后,我最终分开整条线来看看发生了什么.我在调试会话中得到以下内容:

调试会话的屏幕截图

请注意以下行:

List<Domain> domains2 = domains.stream().collect(Collectors.toList());
Run Code Online (Sandbox Code Playgroud)

根据调试器,domains是一个包含两个元素的列表.但申请后,.stream().collect(Collectors.toList())我得到一个完全空的名单.如果我错了,请纠正我,但根据我的理解,那应该是身份操作并返回相同的列表(如果我们是严格的话,还是它的副本).那么这里发生了什么?

在你问之前:不,我根本没有操纵过截图.

为了将其置于上下文中,此代码在有状态请求范围EJB中使用JPA管理实体执行,并在扩展持久性上下文中具有字段访问权限.在这里,您可以获得与手头问题相关的代码的一些部分:

@Stateful
@RequestScoped
@Consumes(MediaType.APPLICATION_JSON)
@Produces(MediaType.APPLICATION_JSON)
public class DomainResources {
    @PersistenceContext(type = PersistenceContextType.EXTENDED) @RequestScoped
    private EntityManager entityManager;

    public boolean templateContainsDomainWithName(String name) { // Extra code included to diagnose the problem
        MetadataTemplate template = this.getTemplate();
        List<Domain> domains = template.getDomains();
        List<Domain> domains2 = domains.stream().collect(Collectors.toList());
        List<String> names = domains.stream().map(Domain::getName).collect(Collectors.toList());
        boolean exists1 = names.contains(name);
        boolean exists2 = this.getTemplate().getDomains().stream().anyMatch(domain -> domain.getName().equals(name));
        return this.getTemplate().getDomains().stream().anyMatch(domain -> domain.getName().equals(name));
    } …
Run Code Online (Sandbox Code Playgroud)

java jpa jax-rs java-ee jboss-arquillian

10
推荐指数
1
解决办法
2735
查看次数

在同一个JUnit测试中使用Arquillian和PowerMock

我想在同一个JUnit 4测试中使用Arquillian和PowerMock的功能.

问题是两个产品都是Runner应该使用的JUnit @RunWith,并且不可能@RunWith在同一个测试类上使用多个,或者将多个Runners类放在同一个@RunWith注释中.

你知道怎么办?

junit unit-testing powermock jboss-arquillian

9
推荐指数
1
解决办法
4104
查看次数

在IntelliJ中调试Arquillian测试

我有Java EE项目,我在JBoss 7(Windows)上使用JUnit进行Arquillian测试.测试工作正常,但我无法调试它们.

从我用Google搜索(https://community.jboss.org/wiki/WhyDontBreakPointsWorkWhenDebugging)我知道Arquillian测试正在单独的VM中运行,因此IntelliJ无法调试它们.我需要IntelliJ通过socket远程连接到那台机器,但我不知道该怎么做.

我找到了这个帖子:在IntelliJ中使用Arquillian进行调试 - 托管容器但是我不知道如何让它工作.

我也跨过了这个帖子:http://devnet.jetbrains.com/message/5253623?tstart = 0所以我希望在我的pom.xml中填充appropriet surefire部分,但它没有帮助:

<plugin>
    <artifactId>maven-surefire-plugin</artifactId>
        <version>2.4.3</version>
        <configuration>
            <debugForkedProcess>true</debugForkedProcess>
        <skip>false</skip>
    </configuration>
 </plugin>
Run Code Online (Sandbox Code Playgroud)

请问有人如何在这样的配置中调试测试吗?

java junit unit-testing jboss-arquillian jboss7.x

9
推荐指数
1
解决办法
7176
查看次数