eclipse下使用arquillian對seam項目進行單元測試
版本: eclipse: 4.2.0 seam: 2.3.0.Final jboss-as: 7.1.0.Final 當前ftc項目pom.xml中的dependency已經包含了arquiilian依賴,所以不用再從官網上復制大片xml到自己的pom.xml中了。但要想在eclipse中執行單元測試還需要一點點改動: 我們首先在cn.ftc.test包下寫一個測試類,代碼如下:package cn.ftc.test;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;@RunWith(Arquillian.class)public class ExcelProcessorTest {@Deploymentpublic static JavaArchive createDeployment() {return ShrinkWrap.create(JavaArchive.class).addClass(ExcelProcessorTest.class).addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml");}@Testpublic void should_create_greeting() {System.out.println("hello");}}
以managed方式運行測試 此方式下無需事先啟動jboss, arquillian會自動啟動JBoss,部署測試jar包,運行測試,最后關閉jboss。 1. 修改arquillian.xml為以下內容:<container qualifier="jboss" default="true"><configuration><property name="jbossHome">你的JBoss安裝目錄</property></configuration></container>
上述代碼的作用是告訴 arquillian JBoss的所在路徑,并用這個JBoss運行測試。
2. 在項目根目錄下的pom.xml中,找到 id 為 arq-jbossas-7-managed 的profile節點, 在groupId為org.jboss.as的節點中,添加一個version節點,內容為7.1.1.Final。(7.1.0.Final也行)。<profile><id>arq-jbossas-7-managed</id><activation><property><name>arquillian</name><value>jbossas-managed-7</value></property></activation><dependencies><dependency><groupId>org.jboss.as</groupId><artifactId>jboss-as-arquillian-container-managed</artifactId><version>7.1.1.Final</version> <!-- 添加這一行 --><scope>test</scope></dependency></dependencies>
3. 向eclipse導入工程。 File --> import ,選擇 existing maven projects. 如圖: 4. 選擇profile: 在pom.xml上點右鍵 --> maven --> select maven profiles。在彈出的對話框中構選 arq-jbossas-7-managed。如圖: 完成后,在ExcelProcessorTest類上點擊右鍵 --> Run As --> JUnit Test 即可運行測試。 以remote方式運行測試 我們手動啟動JBoss,讓arquillian以我們啟動的JBoss為容器運行測試。 1. 類似于上面步驟2,打開pom.xml,找到 id 為 arq-jbossas-7-remote 的 profile節點,在dependency中添加version節點,內容為 7.1.1.Final.<profile><id>arq-jbossas-7-remote</id><activation><property><name>arquillian</name><value>jbossas-remote-7</value></property></activation><dependencies><dependency><groupId>org.jboss.as</groupId><artifactId>jboss-as-arquillian-container-remote</artifactId><version>7.1.1.Final</version> <!-- 添加此行 --><scope>test</scope></dependency></dependencies>
2. 重復前述步驟4,這次要選擇 arq-jbossas-7-remote. 此時我們先從終端啟動JBoss,然后再在測試類上點右鍵 --> Run As --> JUnit Test 即可運行測試.
package cn.ftc.test; 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; @RunWith(Arquillian.class) public class ExcelProcessorTest { @Deployment public static JavaArchive createDeployment() { return ShrinkWrap.create(JavaArchive.class) .addClass(ExcelProcessorTest.class) .addAsManifestResource(EmptyAsset.INSTANCE, "beans.xml"); } @Test public void should_create_greeting() { System.out.println("hello"); } } |
<container qualifier="jboss" default="true"> <configuration> <property name="jbossHome">你的JBoss安裝目錄</property> </configuration> </container> |
2. 在項目根目錄下的pom.xml中,找到 id 為 arq-jbossas-7-managed 的profile節點, 在groupId為org.jboss.as的節點中,添加一個version節點,內容為
7.1.1.Final。(7.1.0.Final也行)。 <profile> <id>arq-jbossas-7-managed</id> <activation> <property> <name>arquillian</name> <value>jbossas-managed-7</value> </property> </activation> <dependencies> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-managed</artifactId> <version>7.1.1.Final</version> <!-- 添加這一行 --> <scope>test</scope> </dependency> </dependencies> |
3. 向eclipse導入工程。
File --> import ,選擇 existing maven projects. 如圖:
4. 選擇profile:
在pom.xml上點右鍵 --> maven --> select maven profiles。在彈出的對話框中構選 arq-jbossas-7-managed。如圖:
完成后,在ExcelProcessorTest類上點擊右鍵 --> Run As --> JUnit Test 即可運行測試。
以remote方式運行測試
我們手動啟動JBoss,讓arquillian以我們啟動的JBoss為容器運行測試。
1. 類似于上面步驟2,打開pom.xml,找到 id 為 arq-jbossas-7-remote 的 profile節點,在dependency中添加version節點,內容為 7.1.1.Final.
<profile> <id>arq-jbossas-7-remote</id> <activation> <property> <name>arquillian</name> <value>jbossas-remote-7</value> </property> </activation> <dependencies> <dependency> <groupId>org.jboss.as</groupId> <artifactId>jboss-as-arquillian-container-remote</artifactId> <version>7.1.1.Final</version> <!-- 添加此行 --> <scope>test</scope> </dependency> </dependencies> |
2. 重復前述步驟4,這次要選擇 arq-jbossas-7-remote.
此時我們先從終端啟動JBoss,然后再在測試類上點右鍵 --> Run As --> JUnit Test 即可運行測試.