Java Video Recorder поддержка Junit 5

Привет! В преддверии конференции SeleniumCamp, на которой я выступлю с докладом "JUnit4 vs TestNG battle", решил немного приоткрыть для вас завесу тайны.

Пока готовился к докладу и исследовал возможности JUnit 5, решил сделать поддержку Java Video Recorder.

Раньше для подключения записи видео в проект с тестами на JUnit 4 нужно было написать такой код:

class TestVideo{

   @Rule
   public VideoRule rule = VideoRule();

   @Test
   @Tag("Flaky")
   @Video
   public void test(){
      open("");
      $("")
   }

}

Достаточно неплохо, но с выходом JUnit 5 все станет еще лучше.

В пятой версии JUnit сделали поддержку еще большего количества extension points, а также добавили поддержку композитных аннотаций.

Естественно, у меня возникло желание попробовать все эти возможности, и теперь Video Recorder полноценно поддерживает JUnit 5. Хорошая новость - больше не нужно писать VideoRule

class TestVideo{

   @Test
   @Tag("Flaky")
   @Video
   public void test(){
      open("");
      $("")
   }

}

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

@Retention(RetentionPolicy.RUNTIME)
@Target(ElementType.METHOD)
@Video
@Tag("Flaky")
@Test
public @interface FlakyTest {}

Код теста в таком случае станет кратким и более читабельным:

class TestVideo{

   @FlakyTest
   public void test(){
      open("");
      $("")
   }

}

Более того, вы сможете запускать тесты по тегу "Flaky".

Теперь адепты JUnit 5 смогут без боязни переходить на новую версию.

P.S Если вы хотите еще больше постичь JUnit 5 и узнать, сможет ли он побить TestNG, жду вас на конференции SeleniumCamp =)