2012-06-22 19 views
93

Ben Sbt'de ScalaTest: etiketsiz tek bir testi çalıştırmanın bir yolu var mı?

test-only *class -- -n Tag 

etiketleri olmadan tek testi çalıştırmak için sbt/scalatest anlatan bir yolu var mı, tek bir test sbt içinde çalıştırarak ran edilebileceğini biliyor? Örneğin: "ikinci testi sınıfa geçirin. Ne olursa olsun" anlamına gelir. Bir sürü testimiz var ve bunları etiketlemek için kimse rahatsız etmedi, bu yüzden bir etiketi olmayan tek bir testi çalıştırmanın bir yolu var mı?

+1

Konunuz "Scalatest-SBT" diyor. Sbt tireli olduğunda insanlar normalde bir eklentiyi düşünürler. Ancak, sadece açıklığa kavuşturmak için, [ScalaTest] 'i (http://www.scalatest.org/) sbt 0.12 gibi modern bir sürümden [http://www.scalatest.org/] kullanmadan bahsediyorsunuz, [joshcough/scalatest-sbt] (https: //) github.com/joshcough/scalatest-sbt) 4 yıl önce yazılı sbt 0.5.2-p3 için bir eklenti. Doğru? –

+0

Doğru. Bu eski bir sorudur ve o zamandan beri hayır olduğunu, (bildiğim kadarıyla) mümkün olmadığını anladım. Birisinin gerçekten bir yol bulmayı başarması durumunda onu kapatmamıştım, ama buna cevap vermek için buna ihtiyacım yok. – Nacht

+0

https://groups.google.com/forum/#!topic/scalatest-users/1oRMkudFAXM adresinden bu konuyla ilgili bir iş parçacığı (hem Bill Venners hem de Mark Harrah'ın katılımı ile) var, ancak henüz çözüm yok –

cevap

120

ile (2.1.3 ScalaTest beri):

testOnly *MySuite -- -z foo 

sadece çalıştırmak için adı "foo" alt kümesini içeren testler.

tam eşlemesi yerine alt dize için, -t yerine -z kullanın.

+2

Eğer 'testOnly * MySuite' kullanılıyorsa, benim için 'test-only * MySuite' kullanılamaz – cevaris

+2

Sabit, teşekkürler @cevaris. sbt 0.13 tire stilinden deve stiline değişti. –

+0

@SethTisue Tam eşleme için '-t' kullanan bir çalışma örneği gönderebilecek misiniz? Onu işe alamıyorum. – rmin

39

Ben bir test sınıfında içinde tek etiketsiz test çalıştırmak için bir yol görmüyorum ama bu soru çalışır herkes için yararlı gibi görünüyor beri benim iş akışı sağlayarak ediyorum. Bir sbt oturumu içinden

:

test:test-only *YourTestClass 

(yıldız işareti bir joker, sen tam yolunu com.example.specs.YourTestClass belirtebilirsiniz.)

bu test sınıfı içindeki tüm testler yapılacaktır. Muhtemelen bunu çalıştırmak sonra herhangi bir başarısız uygulamaları düzeltip, başarısız testler ile en endişeleriniz: Sadece başarısız testler çalıştırır

test:test-quick 

.... (En son çalıştırılan test:test-only komutu tekrarlanması bu durumda test:test-quick aynı olacaktır, ancak uygun test sınıfa test yöntemleri break up eğer başarısız testler yeniden çalıştırmak için test:test-quick daha verimli bir şekilde yapmak için bir joker kullanabilirsiniz.) ScalaTest test için isimlendirme bir test sınıfı, belirli bir test yöntemi, bu nedenle tüm etiketsiz yöntemler yürütülür olduğu

not edin.

Test sınıfında çok fazla test yönteminiz varsa bunları ayrı sınıflara ayırın veya uygun şekilde etiketleyin. (Test edilen sınıfı single responsibility principle ihlal ve bir yeniden düzenleme kullanabileceği Bu bir sinyal olabilir.) Bu, hemen desteklenmektedir

+4

kimler karşı karşıya" Testler yürütülmedi ":' 'YourTestClass' sınıf adı olmalıdır. Dosya adı değil. – MKatleast3

+0

@ MKatleast3 Size 100 kez cevap verebilirim – dangonfast

30

diğer cevaplar Siz test etmek istediğiniz sınıfın adını belirtmek gerekir

eşlik edecek somut bir örnek eklemek istedim, bu yüzden aşağıdaki proje varsa (bu Oynat projedir):

Play Project

Sen SBT konsolundan aşağıdaki komutu çalıştırarak sadece Login testleri test edebilirsiniz:

test:testOnly *LoginServiceSpec 

Eğer SBT konsolundan dışından komutunu çalıştırıyorsanız, aşağıdakileri yapmanız olacaktır:

sbt "test:testOnly *LoginServiceSpec" 
+11

Görünüşe göre çift tırnaklar gerekli olduğundan dolayı: '' 'sbt '' test: testOnly * LoginServiceSpec '' '' –

İlgili konular