2011-10-29 15 views
8

Gruplarda @BeforeMethod kullanimini merak ediyorum. http://testng.org/javadoc/org/testng/annotations/BeforeMethod.html'da:TestNG Gruplara kestirmeden önce

alwaysRun: true olarak ayarlanırsa, bu yapılandırma yöntemi hangi gruplara ait olursa olsun çalışır.

public class BeforeTest { 
private static final Logger LOG = Logger.getLogger(BeforeTest.class); 
@BeforeMethod(groups = {"g1"}, alwaysRun = false) 
public void setUpG1(){ 
    sleep(); 
    LOG.info("BeforeMethod G1"); 
} 

@Test(groups = {"g1"}) 
public void g1Test(){ 
    sleep(); 
    LOG.info("g1Test()"); 
} 

@BeforeMethod(groups = {"g2"}, alwaysRun = false) 
public void setUpG2(){ 
    sleep(); 
    LOG.info("BeforeMethod G2"); 
} 

@Test(groups = {"g2"}) 
public void g2Test(){ 
    sleep(); 
    LOG.info("g2Test()"); 
} 


private void sleep(){ 
    try { 
     Thread.sleep(500); 
    } catch (InterruptedException e) { 
     e.printStackTrace(); 
    } 
} 
} 

verir:

Yani şu sınıf var

Kenara
BeforeMethod G1 
BeforeMethod G2 
g1Test() 
BeforeMethod G1 
BeforeMethod G2 
g2Test() 

önce kimsenin neden hem bana açıklayabilir, awaysRun varsayılan olarak false olduğunu düşünüyorum gerçeği Gruplar dikkate alınmadan her test öncesi yöntemler denir? @Test (skipBeforeMethod = "setUpG1") gibi bir şey de işe yarayacaktı.

IntelliJ IDEA CE 10.5.2 kullanıyorum. Ben de 1.0-kilometre taşı-3 ile çalıştım.

cevap

2

TestNG'yi nasıl başlatıyorsunuz? Hiç grup mu çalıyorsunuz?

Hiçbiri çalıştırmazsanız, hem @ BeforeMethods çalışır. "G1" çalıştırırsanız, sadece setupG1 çalışır, vb ...

+0

Hiç çalışmaz, düşünce gruplaması bir tür filtreleme türüdür, böylece belirli bir gruba sahip olan önceki Yöntem yalnızca aynı gruptaki testlere uygulanır. Sanırım yanılıyordum. Yapmam gereken şey burada çözümünüz gibi bir şeydir (http://stackoverflow.com/questions/3115822/passing-output-of-one-test-method-to-another-method-testng), ancak bununla ilgili problem Çözüm, f1'e bağlı olarak çok sayıda test yapıldığında mResult'un yeniden ayarlanmamasıdır. – rweng

0

AlwaysRun = true kullanmamanızı tavsiye ederim, ancak yapılandırma yöntemleri için özel bir grup oluşturuyoruz ("config" kullanıyoruz) ve daha önce not ekleyerek *() ve *() gruplarından sonra = "config" yöntemiyle.

Tüm test yöntemleri, istediğiniz grupla, örn. "foo" ve "bar".

Ardından, vadede, yapmanız: o zaman başka bir grup eklerseniz

-Dgroups=config,foo 

veya

-Dgroups=config,bar 

, "newgroup", tüm yapılandırma geçmesi gerekmez yöntemleri ve sadece koşmak, onlara "newgroup" ekleyin:

-Dgroups=config,newGroup 

Bu grupların yönetimini yapar şekilde daha kolay! Eğer (? yanlışlıkla) gibi bir şey kaçarsa

: aslında herhangi bir "nonExistingGroup" için açıklamalı testleri ve yapılandırma yönteminiz yok olarak aday olacağını

-Dgroups=config,nonExistingGroup 

yok testlerin (ve hiçbir yapılandırma yöntemlerinin) sadece Çalıştırmak için bu yapılandırma yöntemlerini gerektiren "eşleştirme testleri" varsa çalıştırın.

İlgili konular