JUnit 5: Разница между BeforeEachCallback и BeforeTestExecutionCallback - PullRequest
0 голосов
/ 06 июня 2018

Я не могу найти никаких ресурсов, объясняющих, в чем именно разница между BeforeEachCallback и BeforeTestExecutionCallback в модели расширения JUnit Jupiter.(Меня, конечно, также интересуют варианты "после")

Насколько я понимаю, следующая временная шкала описывает происходящее:

BeforeEach - BeforeTestExecution - Actual execution of the test- AfterTestExecution - AfterEach

Я полагаю, что существует BeforeTestExecution, поэтому вы можете выполнить код после того, как все обратные вызовы BeforeEach были обработаны, но до фактического выполнения теста.Однако это все еще неясно для меня, потому что каждый может просто использовать BeforeTestExecution вместо BeforeEach, и порядок выполнения этих обратных вызовов снова является случайным.

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

1 Ответ

0 голосов
/ 06 июня 2018

Javadocs ( здесь и здесь ) не проводят четкого различия между ними, но JUnit5 документы включают следующее:

BeforeTestExecutionCallback и AfterTestExecutionCallback определяют API для расширений, которые хотят добавить поведение, которое будет выполняться непосредственно перед и сразу после выполнения тестового метода, соответственно.Как таковые, эти обратные вызовы хорошо подходят для синхронизации, трассировки и подобных случаев использования.Если вам нужно реализовать обратные вызовы, которые вызываются из методов @BeforeEach и @AfterEach, вместо этого реализуйте BeforeEachCallback и AfterEachCallback.

Итак, если вы хотите обернуть просто выполнение теста без какой-либо настройки, затем используйте BeforeTestExecutionCallback.Далее в документах предлагается время и протоколирование выполнения теста в качестве возможных вариантов использования для BeforeTestExecutionCallback.

...