2014-06-18 55 views
17

Başarısız bir birim testi var ve neden emin değilim. Sistem Under Testinde meydana gelen sahte tüm davetleri görmek istiyorum. Bu, her zaman her test için istediğim davranış değil, sadece neyin yanlış olduğunu anlayabilmek için hızlıca düzeltmem gereken bir test için. Bununla birlikte, bir kesmek gibi görünmektedir. Thread.currentThread().getStackTrace()'u kullanmak zorunda kalmadan bunu doğal olarak Mockito'da yapmak mümkün mü? Yığın izleme Mockito tarafından dahili olarak kullanılan diğer tüm çağırmaları içerdiğinden Bir mock üzerinde tüm davetleri göstermek için Mockito nasıl kullanılır

Bu

, tercih edilmez.

cevap

28

. Sadece

mock(ClassToMock.class, withSettings().verboseLogging()) 
+0

Vay kullanın. Görünüşe göre Javadoc'u okurken anlık bir körlük yaşadım. Teşekkürler :) – durron597

0

'un'un Thread.currentThread().getStackTrace()'u kullanıp öğelerin içinden geçmesini sağlayan bir yöntem belirledim. Çirkindir ama işi yapar. Umarım bir cevap daha iyi bir yönteme sahip olur.

  1. bir InvocationListener oluşturmak ve bu sistem altında Testi sınıf adını geçmektedir.
  2. geçici bu MockSettings nesneyle Mock oluşturmak için testi değiştirmek Mockito.withSettings().invocationListeners()
  3. içine dinleyici geçirin. InvocationListener ait

Kodu: Bu özellik Mockito 1.9.5 beri yerleşik olan

public static class DebugInvocationListener implements 
     InvocationListener { 
    private final String className; 

    public DebugInvocationListener(Class<?> klass) { 
     this(klass.getName()); 
    } 

    public DebugInvocationListener(String className) { 
     this.className = className; 
    } 

    @Override 
    public void reportInvocation(MethodInvocationReport report) { 
     System.out.println(report.getInvocation()); 
     StackTraceElement[] trace = Thread.currentThread().getStackTrace(); 
     for(StackTraceElement element : trace) { 
      if(element.getClassName().equals(className)) { 
       System.out.println(element); 
       System.out.println(); 
       break; 
      } 
     } 
    } 
} 
İlgili konular