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

Ran*_*ain 19 jboss-arquillian jboss7.x

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

我们拥有如此多的测试类和每个测试类作为@Deployment方法,因此当我一起运行所有测试时,它会产生内存和性能问题.

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

Rya*_*tts 9

你还不能,正式的.

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

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

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

  • 实施终于进行中.您可以在此处找到正在进行的讨论:http://discuss.arquillian.org/t/arquillian-core-suite-subsuite-support/162 (2认同)

Pet*_*sik 0

为什么每个类中都应该有部署方法?我使用 Arquillian 进行 Drone 和 Graphene 的功能测试,并且我有一个带有部署方法的基类、Selenium Web 驱动程序的初始化、一些 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() {}
}
Run Code Online (Sandbox Code Playgroud)

这里一切正常。还要确保您具有正确的 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>
Run Code Online (Sandbox Code Playgroud)

编辑

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

  • Petr,您的解决方案是否仍然会导致多次调用“createDeployment”方法(每个子类一个)?Ranu 想要实现的目标是只部署一次。 (10认同)