JUnit özel ek açıklama

@Test'te beklenen etikete benzer bir özel JUnit ek açıklaması oluşturmak istedim, ancak ek açıklama mesajını da kontrol etmek istiyorum.

Nasıl yapıldığına dair ipuçları var mı, yoksa belki hazır bir şey var mı?

9

3 cevap

JUnit 4.9, kütüphanenin testler için "kurallar" kullanımını sıkılaştırdı, ki bu da özel bir ek açıklama kadar işe yarayabilir. Bir başlangıç ​​olarak TestRule sayfasına göz atın. puan. Bu arabirime dayalı bir kural uygulayabilir ve daha sonra bunları testlerinizde oynatmak için @ClassRule veya (method-level) @Rule ek açıklamalarını kullanabilirsiniz.

İyi bir somut örnek, ExpectedException dır. @Test'in beklenen parametresi (ve sonra bazıları) gibi istisnalar belirtebilmenizi sağlar.

4
katma

JUnit4'ün özel ek açıklamalarınızı almasını sağlamak için, kendi özel Runner uygulamanızı yazmanız ve bunu Test sınıfı üzerindeki RunWith-notuna göndermeniz gerekir.

JUnit 4 için varsayılan uygulama koşucusu olan BlockJUnit4ClassRunner'a göz atabilirsiniz (eğer bellek bana iyi gelirse).

Özel bir koşucu MyRunner ile @MyTest adlı özel bir açıklama almak istediğinizi varsayalım, test sınıfınız şunun gibi görünecektir:

@RunWith(MyRunner.class)
class Tests {
   ...
   @MyTest
   public void assumeBehaviour() {
      ...
   }
}

"Reid Mac" in yanıtı, özel bir ek açıklamanın nasıl uygulandığını açıklamakta oldukça iyi bir iş çıkarmaktadır.

4
katma
Artık "Reid Mac" cevabı yok ..
katma yazar BrunoJCM, kaynak

bahsedildiği gibi özel TestRule oluşturabilir ilk cevap veya kullanabilirsiniz/uzatmak TestWatcher zaten testin başla/bitişini işlemek için bir yönteme sahip. Tanımlamanın aslında test yönteminizin etrafındaki sarıcı olduğu bir yöntem uygulanır (Bildirim tabanı, Açıklama açıklaması) . büyük yöntemini Açıklama href = "http://junit-team.github.com/junit/javadoc/4.10/org/junit/runner/Description.html#getAnnotation%28java.lang.Class%29" rel = "nofollow"> getAnnotation (annotationClass ) İstediğiniz şeyi yapmasını istediğiniz özel bir ek açıklama belirterek

1
katma