2008-12-08 12 views
6

Bir kütüphane yükseltmesi (easymock 2.2 -> 2.4) sayesinde, kilitlemeye başlayan testler yapıyoruz. Bireysel testler için zaman ayırmak isterim, hepsi. Buradaki fikir, kilitli testleri tanımlamaktır - şu anda tahmin ediyoruz - ve düzeltin.TestNG'de zaman aşımı testi

Bu, tercihen bir süit düzeyinde mümkün mü? 400 testimiz var, her bir yöntemi yapıyoruz, hatta her bir sınıf zaman alıcı olacak.

cevap

5

suite tag zaman aşımı özniteliğine sahip olabilir. Bu zaman aşımı, tüm test yöntemleri için varsayılan olarak kullanılacaktır.

Bu varsayılan zaman aşımı, test yöntemine göre geçersiz kılınabilir.

+0

Biz maven kullanıyoruz, bu yüzden eminfire eklentisindeki ilgili ayarları bulmam gerekiyordu. Ne yazık ki, hangi testin üzerinde öldüğünü söylemiyor ?! Ah, bu başka bir soru olacak. – sblundy

+0

Ayrıca, zaman aşımı özniteliğini altında öğesine ekleyebilirsiniz. Bu, öğesinin içerdiği/hariç tutulanlarla birleştiğinde, daha ince taneli denetime olanak tanır. – Saish

2

Suite düzeyi yanlış bir yaklaşım olarak ortaya çıkıyorsa (yani "çok geniş bir ağ", çok fazla zaman aşımı sınırı ile çok fazla yöntemi işaretlemeniz bittiğinden), her bir okunaksız için özel bir IAnnotationTransformer tanımlamanız gerekir. işlevi, bir @Test ek açıklama (örneğin, setTimout() method ile) değiştirmek için fırsat verecektir.
Bir arama yapmak ve "@Test (zaman aşımı =)" ile "@Test" için değiştirin kilitli testini bulmak için çalışması gerekir ve bundan sonra geri alınabilir olabilir

1

(setTimout(0) bir zaman aşımı yönergesi iptal).

+1

bu çok DRY dostu değil – Hilikus

2

Çok geç, ama: jstack -l <PID> çalıştıran, size hangi çağrıların takılıp kaldığını bulmak için inceleyebileceğiniz yığın dökümü verecektir. Takıldıklarından emin olmak için birkaç kez örnek almak isteyebilirsiniz.