jboss7.x jboss-arquillian

jboss7.x - Implementación única para todos los casos de prueba en Arquillian.



jboss-arquillian (3)

Creo que estás preguntando por qué Arquillian necesita desplegar una nueva guerra para cada clase de prueba cuando ejecutas la prueba. Tengo el método de implementación como lo describe Petr Mensik, pero cada clase de prueba seguirá implementándose en su propia guerra cuando ejecute las pruebas. Ponerlo en la súper clase solo simplifica el código desde una perspectiva de menos líneas. Significará que cada clase de prueba que sea subclase tendrá la misma implementación. Eso significa que su implementación será el super conjunto de dependencias y, por lo tanto, mucho más grande que hacerlo individualmente. Creo que es más fácil de administrar y vale la pena el precio, especialmente en proyectos más grandes.

Para responder a su pregunta, parece que no podrá agrupar sus pruebas y desplegar una guerra para probar hasta la versión 2.0 (¿se publicará a finales de este año?).

Estamos utilizando la versión final de arquillian-junit-container 1.0.0 para Junit Test.

Tenemos tantas clases de prueba y cada clase de prueba como el método @Deployment, de modo que cuando ejecuto todas las pruebas juntas, se crea un problema de memoria y rendimiento.

¿Alguien puede ayudarme a solucionar este problema diciendo cómo podemos evitar la implementación múltiple para cada clase? ¿Cómo podemos lograr una implementación única para todos los casos de prueba en Arquillian?


No puedes, oficialmente, todavía.

El problema de JIRA ARQ-197 se creó para admitir la ejecución de varias clases de pruebas en una sola implementación. ¡En 2010! Si quieres esta característica, por favor vota por ella.

Este es el tema más votado de Arquillian. Actualmente está programado para la versión 2.0.0.CR1, que podría ser la próxima versión, pero no puedo encontrar una hoja de ruta / plan de lanzamiento en cualquier lugar que confirme esto.

Mientras tanto, está la extensión de la suite Arquillian (la última encarnación está here ). No es oficial, por lo que hay limitaciones, pero el código base original fue escrito por uno de los desarrolladores centrales de Arquillian para demostrar que eventualmente podrían soportar las suites JUnit. El problema para que este soporte sea oficial está here y es el segundo tema más votado de Arquillian.


¿Por qué debería tener un método de implementación en todas las clases? Uso Arquillian para las pruebas funcionales con Drone y Graphene y tengo una clase base con el método de implementación, la inicialización de Selenium Web Driver, algunos métodos utils y todas las demás clases de prueba solo están extendiendo esta clase y reutilizando mi instancia de Web Driver.

No veo por qué no debería funcionar esto en su caso (o incluso sin ampliar la clase base).

Ok, así es como se ve

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() {} }

Todo está funcionando bien aquí. Asegúrese también de que tiene las dependencias de Maven correctas, estas deben estar presentes para poder ejecutar pruebas funcionales (luego haga la dependencia de todo lo que necesite de estas listas de materiales)

<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>

EDITAR

Bien, de acuerdo con este JIRA no verás esta característica en Arquillian hasta la versión 2.0.0.CR1. Así que el código que mencioné anteriormente es lo mejor que puedes conseguir ahora :-)