JUnit 5 Jupiter 标签使用扩展
JUnit 5 Jupiter tags using extension
我的所有数据库测试都使用自定义 DbExtension
扩展进行注释。我还想标记这些测试,这样我就可以在 CI 中单独 运行 它们。
我可以在扩展 class 上添加什么以便它标记所有扩展测试吗?
只是为了说明(在 kotlin 中):
class DatabaseExtension : ParameterResolver, AfterEachCallback {
//setup connection
}
@ExtendWith(DatabaseExtension::class)
@Tag("db) //Can we have this tag in the extension class instead of each test
class MyDbTest {
}
不是 at/by 扩展,但那将是一个很好的功能。您介意在 https://github.com/junit-team/junit5/issues/new/choose 打开功能请求吗?
不过,您可以创建自己的组合注释。类似于以下内容:
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;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(DatabaseExtension.class)
@Tag("db")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Databased {}
用法:
@Databased
class MyDbTest {}
有关详细信息,请参阅 https://junit.org/junit5/docs/current/user-guide/#writing-tests-meta-annotations。
我的所有数据库测试都使用自定义 DbExtension
扩展进行注释。我还想标记这些测试,这样我就可以在 CI 中单独 运行 它们。
我可以在扩展 class 上添加什么以便它标记所有扩展测试吗?
只是为了说明(在 kotlin 中):
class DatabaseExtension : ParameterResolver, AfterEachCallback {
//setup connection
}
@ExtendWith(DatabaseExtension::class)
@Tag("db) //Can we have this tag in the extension class instead of each test
class MyDbTest {
}
不是 at/by 扩展,但那将是一个很好的功能。您介意在 https://github.com/junit-team/junit5/issues/new/choose 打开功能请求吗?
不过,您可以创建自己的组合注释。类似于以下内容:
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;
import org.junit.jupiter.api.extension.ExtendWith;
@ExtendWith(DatabaseExtension.class)
@Tag("db")
@Target(ElementType.TYPE)
@Retention(RetentionPolicy.RUNTIME)
public @interface Databased {}
用法:
@Databased
class MyDbTest {}
有关详细信息,请参阅 https://junit.org/junit5/docs/current/user-guide/#writing-tests-meta-annotations。