2017-07-18 31 views
9

Ben adımlara webdriver enjekte etmeye çalışıyorlar. this instructions kullanıyorum ve iyi çalışıyor.Bağımlılık enjeksiyonu Salatalık'ta nasıl çalışır?

fikri bir hizmet olarak adımlar sınıflara WebDriver enjekte etmektir. İlk adımda, aşağıdaki bağımlılığı eklemeniz gerekir.

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

Bağımlılık enjeksiyonuna katılan üç ana sınıf vardır. Burada bunları tek tek tanıştırıyoruz.

enter image description here

BaseUtil

BaseUtil WebDriverof Selenyum için bir öznitelik vardır sınıftır. sınıf oldukça basittir: Kanca sınıfı @Before, @After içeren

public class BaseUtil { 

private WebDriver driver; 

public WebDriver getDriver() {return driver;} 

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

Hook. yöntem testTearDown() tarayıcı kapatılması için sorumlu iken yöntem testInitialier(), webDriver dosya yüklemek ve bir örneğini oluşturmak için sorumludur.

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

Adımlar

Ve adımlar sınıf derlenmiş özellikler dosyadan gelen adımları içerir. Eclipse'deki özellik dosyasını derlemek için Eclipse'inize Eclipse-Cucumber eklentisi yüklemeniz gerekir.

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

bunu nasıl çalıştırırım?

Açık özelliği dosyası -> Farklı Çalıştır -> Ben yöneltecek şekilde çalışan yöntemlerden sırası ne merak ediyorum

Junit

Soru ile çalıştırın bağımlılık enjeksiyonu?

  1. JUnit o Hook sınıfının bir örneğini yapmak gerekiyor bu yüzden testInitializer()
  2. testInitializer() Kanca sınıfında olduğu @Before yöntemini çağırır:

    Şu sipariş aşağıdaki gibidir sanırım.

  3. Bu Kanca sınıfının constuctor çağırmak yol açar.

Ama ben geri kalan adımları anlayamıyorum. Belki de hiç de doğru değildir. Yani, Fonksiyonel bir kodum var ama nasıl çalıştığını açıklayamıyorum?

cevap

1

Seni doğru anladığın için, JUnit'i salatalık-yaylı bir test çerçevesi olarak kullanıyorsun.JUnit, aşağıdaki yaşam döngüsünü sağlar.

Yöntemi ek açıklamalarla ek açıklamalara eklediğinizde, önce her bir testten önce bu yöntemi çağırır. @After, kaynakların temizliği ve her testten sonra arama için kullanılabilir. Eğer testi

Testiniz akışı:

  • testInitializer
  • i_clcik_on_the_button
  • Ayrıca

tearDownTest, bunun yerine System.out ait (slf4j) günlüğü kullanabilirsiniz. println ve test akışını izlemek daha kolay olacaktır.

İlgili konular