2009-03-31 14 views
11

TestNG DataProvider'u bir test ile @Parameter ek açıklamalarını kullanarak aynı anda kullanmanın bir yolu olup olmadığını bilen var mı? Test takımlarımız, @Parameter ek açıklaması yoluyla test yöntemlerine aktarılan bazı sabit yapılandırma bilgilerine sahiptir. Şimdi bu testleri bir dizi veri değeri üzerinde çalıştırmak için bir DataProvider kullanmak istiyoruz.TestNG DataProvider'ı ve test paketini kullanmak mümkün Parametreler?

Ortaya çıkan parametrelerin olabileceği siparişi belirlemenin iç problemini anlıyorum ama mümkünse bu özelliğe ihtiyacımız var.

Herhangi bir düşünce? İdeal bir dünyada

, böyle bir şey yapabileceğini:

@Test(dataprovider = "dataLoader") 
@Parameters("suiteParam") 
public void testMethod(String suiteParam, String fromDataParam) { 
... 
} 

cevap

8

Hey, bu biraz aksak olabilir ama bir @BeforeClass yöntemi kullanmak niye bir alanda lokal olarak suiteParam saklamak için test dersi böyle.

private String suiteParam; 

@BeforeClass 
@Parameter("suiteParam") 
public void init(String suiteParam) { 
    this.suiteParam = suiteParam; 
} 

Bu şekilde, veri sağlayıcınızı her zamanki gibi kullanabilir ve yine de süit paramızın erişimini kullanabilirsiniz.

2

Evet, TestNG's dependency injection capabilies numaralı telefonu kullanarak. DataProvider'ınızdaki tüm tanımlanmış parametrelere erişebilirsiniz. Yapılandırılmış ve sonra test için kullanılan bir DataProvider parametreleri oluşturulmuş toplayan olabilir

@DataProvider(name = "usesParameter") 
public Object[][] provideTestParam(ITestContext context) { 
    String testParam = context.getCurrentXmlTest().getParameter("test_param"); 
    return new Object[][] {{ testParam }}; 
} 

Bu şekilde: Bu test_param parametresinin muhtaç bazı örnek DataProvider'ın olduğunu. ITestContext sınıfı ile ilgili ayrıntılar için TestNG JavaDoc'a bakın.

İlgili konular