2012-06-25 36 views
4

我想用Arquillian测试Java EE应用程序。一个简单的设置正在努力将一些测试类放到由Arquillian管理的服务器上进行测试。从基于JBoss 7.1构建真实EAR的Arquillian测试

现在,我想使用在构建过程中构建的EAR文件。用

@Deployment 
public static EnterpriseArchive createDeployment() { 
    File earFile = ... 
    EnterpriseArchive archive = ShrinkWrap.createFromZipFile(EnterpriseArchive.class, earFile); 
    return archive; 
} 

我能够通过Arquillian把EAR放到JBoss。我看到部署,并且在部署期间没有错误。只有Arquillian返回一个错误,它找不到测试类,这显然是好的。

现在是将测试类放到哪里的问题。我可以将测试类放入Arquillian放入EAR的test.war中,但是我找不到ArquillianServletRunner异常。当我将测试类作为模块或库放入JAR文件时,如果将模块或模块作为模块放置,或者由于依赖性问题将其作为库放入时不能正常工作,则无法找到测试类。

我要把测试类放到哪里?

我arquillian.xml:

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

    <defaultProtocol type="Servlet 3.0" /> 

    <container qualifier="jboss7" default="true"> 
     <configuration> 
      <property name="jbossHome">${cargo.dir}/jboss-as-dist-7.1.1.Final/jboss-as-7.1.1.Final</property> 
     </configuration> 
    </container> 

    <engine> 
     <property name="deploymentExportPath">target/deployments</property> 
    </engine> 

</arquillian> 

回答

0

您可以使用@Deployment(可验证= FALSE)的客户端运行测试类,但是这是你不能使用持久性extention下行(也许其他)。

我的示例代码:

@RunWith(Arquillian.class) 
public class PersonWebServiceIT { 

    private PersonWebService service; 

    @Deployment(testable = false) 
    public static Archive<?> createDeployment() { 
     return ShrinkWrap 
       .create(ZipImporter.class, "test.war") 
       .importFrom(
         new File("simple-webservice-1.0.0-SNAPSHOT.war")) 
       .as(WebArchive.class); 
    } 

    @Test 
    public void testFindPersons(@ArquillianResource URL deploymentUrl) { 
     .... 
    } 

} 
0

把测试类战争耳内没有工作对我来说

WebArchive war = ear.getAsType(WebArchive.class, "/mywarname.war"); 
war.addClass(MyTestClass.class); 
0

当我处理与现有的耳朵,我喜欢把WAR分离运行测试,从我放入特殊JAR以及其他测试EJB的实际测试中运行。我已经发布了一个示例,如何在类似问题下使用必要的application.xml操作来执行此操作:https://stackoverflow.com/a/17036383/1667977