Arquillian中所有测试用例的单一部署

时间:2013-04-20 12:15:19

标签: jboss7.x jboss-arquillian

我们正在使用arquillian-junit-container 1.0.0最终版本进行Junit测试。

我们有很多测试类和每个测试类都是@Deployment方法所以当我一起运行所有测试时,它会产生内存和性能问题。

任何人都可以通过告诉我们如何避免每个单独的类的多重部署来帮助我解决这个问题。我们如何在Arquillian中为所有测试用例实现单一部署?

3 个答案:

答案 0 :(得分:9)

你还不能正式。

创建JIRA问题ARQ-197是为了支持针对单个部署运行多个测试类。 2010年!如果您想要此功能,请投票赞成。

这是Arquillian投票最多的问题。它目前定于版本2.0.0.CR1,可能是下一版本,但我无法在任何地方找到路线图/发布计划,以确认这一点。

与此同时,还有Arquillian Suite Extension(最新版本为here)。它不是官方的,因此存在局限性,但最初的代码库是由一位Arquillian核心开发人员编写的,以证明他们最终可以支持JUnit套件。使这个支持官员的问题是here,是Arquillian的第二大投票问题。

答案 1 :(得分:2)

我想你在问为什么Arquillian在运行测试时需要为每个测试类部署一个新的战争。我有Petr Mensik所描述的部署方法,但是当你运行测试时,每个测试类仍将部署在它自己的战争中。将它放在超类中只能从较少的线条角度简化代码。这意味着每个子类的测试类都将具有相同的部署。这意味着您的部署将是超级依赖集,因此比单独执行它要大得多。我认为管理起来更容易,特别是对于大型项目而言也是物有所值。

要回答你的问题,看起来你将无法对你的测试进行分组并部署一场战争直到2.0版测试(今年年底到期?)。

答案 2 :(得分:1)

为什么你应该在每个类中都有部署方法?我使用Arquillian进行功能测试,使用Drone和Graphene,我有一个带有部署方法的基类,Selenium Web Driver的初始化,几个utils方法和我的其他测试类只是扩展此类并重用我的Web驱动程序实例。

我不明白为什么不能在你的情况下工作(甚至没有扩展基类)。

好的,这就是它的外观

public class WebDriverTest extends Arquillian { //I am using TestNG

    @Drone
    protected WebDriver driver;

    @ArquillianResource
    private URL contextRoot;

    @Deployment(testable = false) //functional tests cannot run in container
    public static WebArchive createDeployment() {
        File archive = new File("target/myApp.war");
        ShrinkWrap.createFromZipFile(WebArchive.class, archive);
    }
}


public class TestClass extends WebDriverTest {

    @Test
    public void test1() {}

    @Test
    public void test2() {}
}

这里的一切都运转良好。还要确保您拥有正确的Maven依赖项,必须存在这些依赖项才能运行功能测试(然后根据这些BOM对所需的任何内容进行依赖)

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.jboss.arquillian.selenium</groupId>
            <artifactId>selenium-bom</artifactId>
            <version>${selenium.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian</groupId>
            <artifactId>arquillian-bom</artifactId>
            <version>${arquillian-core.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
        <dependency>
            <groupId>org.jboss.arquillian.extension</groupId>
            <artifactId>arquillian-drone-bom</artifactId>
            <version>${arquillian-drone.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

修改

好的,所以根据这个JIRA,在版本2.0.0.CR1之前,你不会在Arquillian中看到这个功能。所以我上面提到的代码是你现在能得到的最好的代码: - )