2016-08-02 6 views
1

Ich arbeite an einem Test-Framework, das Serenity, Selenium und jUnit verwendet. Ich habe einige Tests, die von der Benutzerauthentifizierung abhängen. Grundsätzlich muss ich alle Login-Schritte für jeden Test wiederholen. Ich wollte diese Schritte in eine @Before-Methode verschieben, aber es scheint, dass Schritte nicht in einer Methode initialisiert werden, die nicht als @Test annotiert ist. Siehe Code-Snippet unten, AuthSteps-Instanz wird nicht initialisiert.Serenity BDD mit jUnit wie Schritte in Setup-Methode injizieren?

Welche sind meine Optionen?

@RunWith(SerenityRunner.class) 
public class MyTests extends AbstractTest { 
@Managed(driver = "firefox", uniqueSession = false) 
@Steps 
AuthSteps auth; 

@Before 
public void authSetup() { 
if (!authenticated){ 
    auth.login(); 
    //a lot of other things 
} 
} 

@Test 
public void mytest(){ 
//do test related stuff 
} 

Antwort

1

Sie tun. Die Schritte werden entweder mit @BeforeClass, @Before, @Test usw. ausgeführt. Es scheint, dass Ihre if (!authenticated) Anweisung die Ausführung Ihres Schritts auth.login() ausschließt.

Es gibt sicherlich nicht genug Code hier zur Verfügung gestellt (wie das ist boolean authenticated), um Ihr Problem klar zu untersuchen, aber ich hoffe, diese Antwort hilft Ihnen.

+1

Ja, es scheint, das Problem war komplett anderswo, ich schaffte es, die @Managed Annotation an der falschen Stelle zu platzieren ... Peinlich. – vicusbass

+0

Korrekt, für die mit ähnlichen Problemen sollte es so etwas wie sein: '@Managed (driver =" firefox ", uniqueSession = false) statische WebDriver-Treiber;' – JDelorean