2010-06-25 17 views
7

için bir test metodunun çıkışını geçme:Ben TestNG aşağıdaki birim test durumları yazmak zorunda başka bir yöntem TestNG

  1. ürün ayrıntıları DB başarıyla kaydedildi eğer productId dönecekti hangi saveProductTest.

  2. değiştirmekÜrünTest, daha önce kaydedilen productId parametresini kullanmalıdır.

ben kaydetme yöntemi oluşturulur TestNG veri providers.Since productId kullanarak bir XML dosyasından saveProductTest ve modifyProductTest yöntemi için ürün ayrıntıları girişi (PrdouctName, ReleaseDate) alıyorum, ben değiştirmek yöntemine geçmek zorunda .

Testng'de bir test yönteminin çıktısını başka bir yönteme iletmenin en iyi yolu nedir?

+0

Genellikle birim test için, geçerli birim testinin bir parçası olmayan bir şey taklit istiyor. – Amber

cevap

12

Simendsjo'ya olan tüm saygımla, tüm testlerin birbirinden bağımsız olması gerçeği, çok fazla istisnai olan dogmatik bir yaklaşımdır.

Özgün soruya geri dönün: 1) bağımlı yöntemleri kullanın ve 2) ara sonucu bir alanda depolayın (TestNG örneklerinizi sıfırdan oluşturmaz, böylece alanın değeri korunur). Örnek ITestContext nesne ile

private int mResult; 

@Test 
public void f1() { 
    mResult = ... 
} 

@Test(dependsOnMethods = "f1") 
public void f2() { 
    // use mResult 
} 
+0

Not: Eclipse'i TestNG eklentisi ile kullanıyorsanız, test metodunuzu f2 "sadece" yürütürken (Sağ Tıklatma Yöntemi> Farklı Çalıştır) > TestNG Testi), Eclipse otomatik olarak ilk f1'i ve sonra f2'yi çalıştırır. –

3

Her birim testi diğer testlerden bağımsız olmalıdır, böylece nelerin başarısız olduğunu daha kolay görebilirsiniz. Ürünü kaydetme ve kimliği geri döndürme konusunda yardımcı bir yönteminiz olabilir ve bunu her iki testten de yapabilirsiniz.

+0

Eğer işlem işlemi test seviyesinde yapılırsa, bu durumda farklı bir yönteme geçmek zorunda kalacağı varsayımları –

4

için

. Bu, dünya çapında Suite bağlamında mevcut olan ve her bir @ Test'teki parametreyle disponibil olan bir nesnedir. Örneğin

:

@Test 
public void test1(ITestContext context, Method method) throws Exception { 
    // ... 
    context.setAttribute(Constantes.LISTA_PEDIDOS, listPaisPedidos); 
    // ... 
} 

@Test 
public void test2(ITestContext context, Method method) throws Exception { 
    List<PaisPedido> listPaisPedido = (List<PaisPedido>) 
    context.getAttribute(Constantes.LISTA_PEDIDOS); 
    // ... 
} 
İlgili konular