У меня в моем проекте около 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");
}
};
Заранее спасибо.
Вы вызываете start() и завершаете() при запуске и завершении теста? – Fooble
@Fooble: Они переопределяют. [TestWatcher называет их автоматически.] (Https://github.com/junit-team/junit/blob/master/src/main/java/org/junit/rules/TestWatcher.java) –
Плохо, игнорируйте меня! – Fooble