Debian-7.1下JBoss Forge + Arquillian + JBoss-as-7.1 测试环境搭建

下载安装Forge

JBoss Forge是一种可以快速建立、开发Java项目的工具,经过它咱们能够迅速生成项目骨架,解决库依赖问题,并与Arquillian测试框架集成。Forge有点相似于seam-gen,但其最大的不一样之处在于,seam-gen只能在项目建立时一次性成生class,而Forge能够随时动态添加class,field, 依赖库等。咱们能够从官网( http://forge.jboss.org/)下载forge,但速度真的很是慢,只有40kb/s。因而我把它上传到了百度云:http://pan.baidu.com/s/1bnzj2Cf

forge安装很是简单,解压tar.gz,配置环境变量$FORGE_HOME为forge安装目录,再将$FROGE_HOME/bin添加到$PATH中便可。

建立项目并添加Arquillian支持

不用forge也行,但要手工修改pom.xml添加不少dependency。forge能够为咱们代劳。步骤以下:

运行forge:
forge

启动forge大概须要5s,不知道这么久的时间forge在作什么。。启动成功后应该输出以下提示:



建立项目arquillian-demo,并建立包org.arquillian.example:
new-project --named arquillian-demo --topLevelPackage org.arquillian.example

用forge的beans插件安装CDI支持:
beans setup

建立一个Bean:
beans new-bean --type org.arquillian.example.MySimpleBean --scoped DEPENDENT

回到工程根目录:
cd ~~

为forge安装arquillian插件:
forge install-plugin arquillian

注意,不要经过Arquillian官网的Guide给出的连接下载forge,那个是1.0版,而arquillian插件最低要求为1.3。

以上是arquillian官网给出的步骤,但若是再向下就会出错了,多是文档没有及时更新。不过咱们能够在Forge的官网上找到说明  http://forge.jboss.org/docs/important_plugins/arquillian-testing.html#content

设置测试容器(这里是JBoss-as-7.1.0):
arquillian setup --containerType MANAGED --containerName JBOSS_AS_MANAGED_7.X

Tip: 输入
arquillian setup --containerType MANAGED --containerName [TAB]

能自动列出arquillian支持的全部容器列表。

此时forge会问咱们是否要安装JBoss,咱们选择不安装。

修改arquillian.xml文件,内容以下:
<container default="true" qualifier="JBOSS_AS_MANAGED_7.X">
    <configuration>
      <property name="jbossHome">JBOSS安装目录</property>
    </configuration>
  </container>

生成测试Bean

forge能够根据已有的类自动生成对应的测试类:
arquillian create-test --class org.arquillian.example.MySimpleBean.java

这会生成MySimpleBeanTest.java文件:
package org.arquillian.example;

import org.arquillian.example.MySimpleBean;
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.spec.JavaArchive;
import org.jboss.shrinkwrap.api.asset.EmptyAsset;
import org.junit.Assert;
import org.junit.Test;
import org.junit.runner.RunWith;
import static org.junit.Assert.*;
import static org.hamcrest.core.Is.*;

@RunWith(Arquillian.class)
public class MySimpleBeanTest {
    @Inject private MySimpleBean mysimplebean;

    @Deployment public static JavaArchive createDeployment() {
        return ShrinkWrap.create(JavaArchive.class, "test.jar")
            .addClass(MySimpleBean.class)
            .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");
    }

    @Test
    public void testIsDeployed() {
        Assert.assertNotNull(mysimplebean);
    }
}

在JBoss中运行测试

build test --profile arq-jboss_as_managed_7.x

此时forge会启动Jboss,部署由ShrinkWrap生成的jar包,并运行测试。
若是你发如今启动JBoss后过程就停住了,没有任何Result,那么就要检查一下pom.xml,找到最后一个dependency节点,看看version是否为你JBoss对应的版本。
<dependencies>
        <dependency>
          <groupId>org.jboss.as</groupId>
          <artifactId>jboss-as-arquillian-container-managed</artifactId>
          <version>7.1.0.Final</version>
        </dependency>
      </dependencies>

我这里以前竟然是7.1.1,致使出现各类奇妙的错误,浪费了很多时间。若是你想先手动启动JBoss,而后让arquillian在远程容器中运行测试的话,那么就要修改arquillian.xml,将allowConnectingToRunningServer设为true:
<container default="true" qualifier="JBOSS_AS_MANAGED_7.X">
    <configuration>
      <property name="jbossHome">/home/whf/app/jboss-as-7.1.1.Final</property>
      <property name="allowConnectingToRunningServer">true</property>
    </configuration>
  </container>



至此测试环境配置完毕,测试成功后的输出结果以下:
相关文章
相关标签/搜索