Perché dovresti avere il metodo di implementazione in ogni classe? Io uso Arquillian per i test funzionali con Drone e Graphene e ho una classe base con metodo di implementazione, inizializzazione di Selenium Web Driver, pochi metodi utils e ogni altra classe di test è semplicemente estendendo questa classe e riutilizzando l'istanza di Web Driver.
Non vedo perché non dovrebbe funzionare nel tuo caso (o anche senza estendere la classe base).
Ok, questo è come appare
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() {}
}
Tutto sta funzionando bene qui. Assicurarsi inoltre di avere diritto dipendenze Maven, questi deve essere presente, al fine di eseguire i test funzionali (poi fare dipendenza per tutto il necessario da queste distinte base)
<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>
EDIT
Ok, in base a questo JIRA non vedrete questa funzione in Arquillian fino alla versione 2.0.0.CR1. Quindi il codice che ho menzionato sopra è il meglio che puoi ottenere adesso :-)
fonte
2013-04-22 06:28:51
puoi fornire l'esempio perché ho provato questo e non funziona sul mio terminale –
Petr, la tua soluzione non darebbe ancora più chiamate al metodo 'createDeployment' (uno per ogni sottoclasse)? Quello che Ranu sta cercando di ottenere è schierarlo una sola volta. –