在JUnit 5中为标记的测试运行特定的设置

时间:2019-09-10 10:28:51

标签: java junit junit5

我正在将JUnit 5与Java结合使用来编写集成测试。其中一些连接到数据库,而我正在寻找两种方法:

  • 过滤器测试
  • 在测试之前运行数据库设置(截断表等)

用于带有特定注释的测试。

到目前为止,我发现使用标签可以执行以下操作:

import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;

import org.junit.jupiter.api.Tag;

@Target({ ElementType.TYPE, ElementType.METHOD })
@Retention(RetentionPolicy.RUNTIME)
@Tag("database")
public @interface Database {}

,然后将@Database批注用于filter annotated tests out

现在,我正在寻找一种解决方案,以为所有使用此注释注释的测试建立一个测试设置。会是什么?

1 个答案:

答案 0 :(得分:2)

该解决方案需要两个步骤:

  • 编写Jupiter扩展名,例如MyDatabaseSetup完成必要的设置/拆卸工作
  • @ExtendWith(MyDatabaseSetup.class)添加到您的数据库注释中

现在,每个用@Database注释的类或测试方法也将使用扩展名。