2011-07-24 13 views
9

TestNg ve Java'da, DataProvider'ı kullanarak birden fazla sınama durumu çalıştırabiliriz ve bu, ayrı sınamalar olarak çalıştırılır, yani bir sınamanın yürütülmesi, hata durumunda durdurulmaz. ScalaTest veya Specs/Specs2 için bir analog var mı?Birden çok sınama durumu içeren Scalatest veya specs2

+0

Soru kafa karıştırıcı. Lütfen ne demek istediğine dair bir örnek ver. –

cevap

24

Hem ScalaTest hem de spec2'de, verileri veri ile parametrelendirmek için çalışma zamanında deneme durumları oluşturmak kolaydır.

class BasketSpecification extends Specification { 

    "a basket must contain fruits" >> { 
     Seq(apple, banana, orange) foreach { fruit => 
     ("it contains: " + fruit) >> { 
      basket must contain(fruit) 
     } 
     } 
    } 
    } 

Ardından çıkışı: Aşağıdaki şartname Oysa

A basket must contain fruits 
+ it contains: apple 
+ it contains: banana 
+ it contains: orange 

: Burada specs2 ile bir örnek

A basket must contain fruits 
+ it contains: apple 
x it contains: cake 
    'basket' does not contain 'cake' 
+ it contains: orange 
+0

Sorumu tekrar okudum. Yönteminiz BİR test olarak çalışır, yani bir durumda başarısızlık testin başarısızlığı demektir. TestNg'de, bu üç test olarak çalıştırılacak ve bu nedenle hata bilgileri anlamlı – user44242

+0

Üzgünüz, bu özellik aslında sadece 3 test oluşturduğundan emin değildi. Bunu göstermek için çıktıyı ekledim. – Eric

+0

Güncellenmiş sözdizimi için bakın: http://etorreborre.github.io/specs2/guide/org.specs2.guide.Matchers.html#With+sequences –

9

:

class BasketSpecification extends Specification { 

    "a basket must contain fruits" >> { 
     Seq(apple, cake, orange) foreach { fruit => 
     ("it contains: " + fruit) >> { 
      basket must contain(fruit) 
     } 
     } 
    } 
    } 

gibi bir şey çıktı mı Bu kavram "shar" denir ScalaTest'te "testler", aynı test kodunun, birden fazla fikstür tarafından "paylaşılmakta" olduğu için, TestNG'nin DataProvider yaklaşımında "fikstür" in "veri" olduğu. ScalaTest'te, testleri işlevler olarak ifade eden her stil özelliği için bunu yapmanın bir yolu vardır. İşte WordSpec için bir örnek: Alternatif bir yöntem sadece farklı veri noktaları için aynı test kodu kaydetmek için döngü için kullanabilirsiniz

http://www.scalatest.org/scaladoc-1.6.1/#[email protected]

. Bu burada bir e-posta tartışmasında gündeme geldi: Bu aslında 15 testleri, her tarayıcı sürücüsü için beş testleri kaydeder

for (browser <- List("IE", "Chrome", "Firefox")) { 
    test(browser + ": test one") { driver => 
     info("Testing using " + driver) 
    } 
    test(browser + ": test two") { driver => 
     info("Testing using " + driver) 
    } 
    test(browser + ": test three") { driver => 
     info("Testing using " + driver) 
    } 
    test(browser + ": test four") { driver => 
     info("Testing using " + driver) 
    } 
    test(browser + ": test five") { driver => 
     info("Testing using " + driver) 
    } 
    } 
} 

:

http://groups.google.com/group/scalatest-users/browse_thread/thread/7337628407b48064#

bu durumda döngü kodu benziyordu. Bu senin peşinde olduğun şey olduğuna inanıyorum.

İlgili konular