% 100 kod kapsamı girişimlerinde, bir InterruptedException
yakalayan kod birim bloğuna ihtiyacım olan bir durumla karşılaştım. Biri bunu nasıl doğru bir şekilde test eder?"InterruptedException" için birim testi nasıl yazılır
private final LinkedBlockingQueue<ExampleMessage> m_Queue;
public void addMessage(ExampleMessage hm) {
if(hm!=null){
try {
m_Queue.put(hm);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
+1, bu doğrudur. 80-85'i hedefleyin ve bu gibi sorunların hepsinden sakınacaksınız ve kodunuzu oldukça bozulmamış halde tutabileceksiniz. – BjornS
Bu oldukça acımasız bir çözüm ve beklenmedik yan etkilere sahip olabilir. Örneğin, bir test yönteminde Thread.currentThread(). Interrupt() öğesinin çağrılmasının tüm sınama yöntemlerini aynı sınıfta etkileyeceğini ve diğer tüm sınamaların başarısız olmasına neden olduğunu buldum. Bunu, herhangi bir test sınıfına eklediğimde, Sonar'ın% 0 ünite test kapsamını rapor etmesine neden olduğunu buldum (nedenini bulamadı). – RCross
Evet, kullandığınız yere dikkat etmelisiniz, kesme durumunun temizleneceğinden (burada olduğu gibi) ve ayarınız ile testinizin kontrol edilmesi arasındaki durumun araya girip girmediğini kontrol etmelisiniz. – erickson