下載安裝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 new-bean --type org.arquillian.example.MySimpleBean --scoped DEPENDENT
回到工程根目錄:
cd ~~
爲forge安裝arquillian插件:
forge install-plugin arquillian
注意,不要經過Arquillian官網的Guide給出的連接下載forge,那個是1.0版,而arquillian插件最低要求爲1.3。
設置測試容器(這裏是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>
至此測試環境配置完畢,測試成功後的輸出結果以下: