2015-07-27 2 views
1

У меня в моем проекте около 5000 модульных тестов, и я пытаюсь записать время, затрачиваемое каждым модульным тестом. Я не могу редактировать @Before и @After, перейдя в каждый модульный тест.Как проверить время, требуемое модульным тестом (весь класс)

Я пытаюсь использовать @Rule, но каким-то образом это не помогает, я даже не смог заставить его работать, но моя изменяющаяся аннотация для @ClassRule и создание моего статичного наблюдателя я смог по крайней мере получить удовольствие от начала и конец выполнения единичного теста, я просто не знаю названия модульного теста. Вот мой код:

У меня есть класс под названием IIMUnitTest (родительский класс), и все модульные тесты расширяют этот класс.

Я добавил следующий код в IIMUnitTest

@Rule 
public TestRule watcher = new TestWatcher() { 
    Long timeStart; 
    protected void starting(Description description) { 
     timeStart = System.currentTimeMillis(); 
     Calendar cal = Calendar.getInstance(); 
     System.out 
       .println("==========================================================================="); 
     System.out.println("Test: " + description.getMethodName()); 
     TimeZoneFormat dateFormat = null; 
     System.out.println("Start Time: " + dateFormat.format(cal.getTime())); 
     System.out 
       .println("=============================================="); 
    } 

    protected void finished(Description description) { 
     Long timeEnd = System.currentTimeMillis(); 
     double seconds = (timeEnd-timeStart)/1000.0; 
     System.out 
       .println("\n============================================================"); 
     System.out 
       .println("Test completed - ran in: "+new DecimalFormat("0.000").format(seconds)+" sec"); 
     System.out 
       .println("========================\n"); 

    } 
}; 

Заранее спасибо.

+0

Вы вызываете start() и завершаете() при запуске и завершении теста? – Fooble

+0

@Fooble: Они переопределяют. [TestWatcher называет их автоматически.] (Https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/rules/TestWatcher.java) –

+0

Плохо, игнорируйте меня! – Fooble

ответ

0

Вы можете расширить правило StopWatch, входящее в состав JUnit 4.12. Он делает расчет для вас.

Смежные вопросы