2017-07-18 20 views
9

Próbuję wstrzyknąć webdriver do kroków. Użyłem this instructions i działa dobrze.W jaki sposób wtrysk zależność działa w Ogórek?

Pomysł polega na wstrzyknięciu WebDriver do klas czynności jako usługi. W początkowym kroku musisz dodać następującą zależność.

<dependency> 
    <groupId>info.cukes</groupId> 
    <artifactId>cucumber-spring</artifactId> 
    <version>1.2.5</version> 
    <scope>test</scope> 
</dependency> 

Istnieją trzy główne klasy, które są zaangażowane w zastrzyk zależności. Tutaj przedstawiamy je jeden po drugim.

enter image description here

BaseUtil

BaseUtil jest klasa, która ma atrybut dla WebDriverof selenu. Klasa jest dość prosta:

public class BaseUtil { 

private WebDriver driver; 

public WebDriver getDriver() {return driver;} 

public void setDriver(WebDriver driver) { this.driver = driver;} 
} 

Hook

klasa Hook zawiera @Before, @After. Metoda testInitialier() jest odpowiedzialna za załadowanie pliku webDriver file i utworzenie instancji, natomiast metoda testTearDown() jest odpowiedzialna za zamknięcie przeglądarki.

public class Hook extends BaseUtil{ 

    BaseUtil base; 


    @Before 
    public void testInitializer(){ 
     File file = new 
      File(IgniteTaskApplication.class.getClassLoader().getResource("driver/chromedriver.exe").getFile()); 
     String driverPath=file.getAbsolutePath(); 
     System.out.println("Webdriver is in path: "+driverPath); 
     System.setProperty("webdriver.chrome.driver",driverPath); 
     base.setDriver(new ChromeDriver()); 
    } 

    public Hook(BaseUtil base) { 
     this.base = base; 
    } 

    @After 
    public void tearDownTest(){ 
     base.getDriver().close(); 
    } 
} 

Kroki

a klasa kroki zawiera kroki, które weszły z skompilowanego pliku funkcji. Aby skompilować plik funkcji w Eclipse, musisz zainstalować wtyczkę Eclipse-Cucumber w Eclipse.

public class ClickButton_Steps extends BaseUtil{ 
    BaseUtil base; 

    public ClickButton_Steps(BaseUtil base){ 
     super(); 
     this.base=base; 
    } 

    @When("^I clcik on the button$") 
    public void i_clcik_on_the_button() throws Throwable { 
     cb=new ClickButtonPage(base.getDriver()); 
     cb.navigator(); 
    } 

     // The other steps ... 
} 

Jak uruchomić?

Otwórz plik cecha -> Uruchom jako -> Uruchom z JUnit

pytań

Zastanawiam Jaka jest kolejność metod działa w sposób, który prowadzi do wtrysk zależności?

Chyba kolejność jest następująca:

  1. JUnit nazywa @Before metodę, która jest testInitializer()
  2. testInitializer() jest w klasie Hook więc musi uczynić wystąpienie Hook klasie.
  3. Powoduje wywołanie elementu constuctor klasy Hook.

Ale nie mogę zrozumieć pozostałych kroków. Może nawet to wcale nie jest prawdą. Mam na myśli, Mam funkcjonalny kod, ale nie mogę wyjaśnić, jak to działa?

Odpowiedz

1

Jak rozumiem, poprawnie używasz JUnit jako ramy testowej z ogórkowo-wiosenną.JUnit zapewnia następujący cykl życia.

Po dodaniu adnotacji do metody z adnotacją @ Przed rozpoczęciem wywoływania tej metody przed każdym testem. Jeśli chodzi o @After może być używany do czyszczenia zasobów i wywoływania po każdym teście.

przepływ testy po uruchomieniu testu:

  • testInitializer
  • i_clcik_on_the_button
  • tearDownTest

Ponadto, można użyć zalogowaniu (slf4j) zamiast System.out. println i łatwiej będzie śledzić przebieg testu.

Powiązane problemy