2013-03-05 24 views
6

yöntem adı nedeniyle başarısız oluyor Neden bir test yönteminin adı, diğer sınamaları etkileyebilir?JUnit sınaması,

2 sınıf sınama içeren bir paketim var ve class1 yöntem yöntemini değiştirdiğimde, sınama2 sınaması tamam (yeşil).

Her iki sınıfın da aynı ada sahip bir yöntemi olduğunu farkettim, ancak başarısız olan sınama bunların hiçbiri değil. Ancak bunlardan herhangi birini yeniden adlandırırsam, tüm testler tamam.

Aynı sınıfta aynı sınıfta, ancak aynı süitte 2 yönteme sahip olmak uygun mu? Ve başka bir testin rastgele başarısız olması sadece tesadüf mü?

ps: Bu yöntemi yeniden adlandırdıktan sonra çalıştırılan sınamaların sırası değişti. ps2: Kötü ingilizcem için üzgünüm. enter image description here

+11

Testler, gerçekten herhangi bir sırada çalışacak şekilde iyi tasarlanmış mı? Çalıştıkları sıraya bağlı olabilecek herhangi bir durum var mı? – vikingsteve

+6

Sorun muhtemelen yürütme sırasına göre değil, testin adıdır. Testlerden biri (veya birçoğu) diğerinin durumunu değiştirebilir. –

+1

Testin, bir testin başka bir testin yan etkilerine bağlı olduğu ve bu nedenle belirli bir sırayla çalışmasını gerektiren bir Test İzolasyon Arızası gibi kokuyor. –

cevap

7

JUnit hiçbir hata yoktur:

O resim daha iyi sorumu açıklayabilir! Ekibimiz, uygunsuz kaynak yönetiminin neden olduğu benzer sonuçları yaşadı. Başarısız testinizi yeniden adlandırmayı deneyebilirsiniz, böylece ilk önce çalıştırılır. Şimdi yeşile dönmeliler, bu çoğunlukla bir kaynağın yanlışlıkla testler arasında paylaşıldığının bir işareti. Bu durumda, yırtılarak (@After) kaynağı serbest bırakmayı deneyebilirsiniz.

  • orada Konu Bir test hayatta olduğunu Are: İşte nedenini bulmak için biraz kontrol listesi nedir?
  • Tüm Yürütücüler kapanıyor ve sonlandırılıyor mu?
  • Testten sonra dosyalar veya akışlar hala açık mı?
  • Test sınıfındaki tüm alanlar sınandıktan sonra sıfırlanır/yeniden başlatılır mı?
  • Statik referanslar veya tekil sayılar kullanmaktan kaçının
  • Test yönteminizde yalnızca serbest bırakma yönteminde kaynak bulun. Aksi halde bir istisna bu kod parçasına ulaşılamaz hale gelebilir.