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>



至此測試環境配置完畢,測試成功後的輸出結果以下:
相關文章
相關標籤/搜索