Как исключить продолжительность выполнения из методов, аннотированных аннотациями JUnit 4 «До» и «После» - PullRequest
0 голосов
/ 16 февраля 2020

Я выполняю несколько простых тестов производительности с JUnit 4 и использую perfReport Дженкина, чтобы я мог сгенерировать отчет о производительности.

Во время выполнения этих тестов я заметил, что выполнение тестового метода включает в себя время выполнения методов, аннотированных с помощью @before и @ after из JUnit 4.

Я сталкивался с подобным постом: Исключить @ Перед продолжительностью метода из времени тестирования JUnit , однако мне требуется мой выходной формат в отчете в стиле JUnit, так как perfReport Jenkin анализирует только формат в стиле JUnit.

Таким образом, есть ли способ исключить время выполнения этих аннотированных методов?

1 Ответ

0 голосов
/ 21 февраля 2020

Я решил это, выполнив следующее:

  1. Расширение BlockJUnit4Runner
  2. Переопределение метода runChild (), так как именно здесь принимаются тестовые уведомления
  3. Написание собственного метода runLeaf (), так как именно здесь запускаются уведомители теста для уведомления о начале или остановке теста.
  4. Переопределение метода methodInvoker (), поскольку именно здесь вызывается метод теста
  5. Создание нового класса Statement, который функционально выполняет тот же набор действий, что и объект оператора invokeMethod (), созданный в methodInvoker. Этот класс, тем не менее, получает уведомление о тестировании, что позволяет вам контролировать, как и когда тест считается начатым.

Одна из проблем вышеуказанного подхода заключается в том, что вам потребуется извлечь фрагменты кода, которые помогите запустить правила JUnit, чтобы сохранить выполнение правил, так как эти методы странно закрыты.

...