簡體   English   中英

Junit5 Tag Annotation 和 Quarkus QuarkusTestResource Annotation

[英]Junit5 Tag Annotation together with Quarkus QuarkusTestResource Annotation

QuarkusTestResource 如何與 Tag Annotation 結合使用?

示例測試程序

import org.junit.jupiter.api.Tag;
import org.junit.jupiter.api.Test;

import io.quarkus.test.common.QuarkusTestResource;
import io.quarkus.test.junit.QuarkusTest;

@QuarkusTest
@Tag("integration")
@QuarkusTestResource(DatabaseResource.class)
public class MyTest {

    @Test
    public void () {
        doTests...
    }

}

Maven 代碼段:

    <quarkus-plugin.version>1.12.1.Final</quarkus-plugin.version>
    <quarkus.platform.artifact-id>quarkus-universe-bom</quarkus.platform.artifact-id>
    <quarkus.platform.group-id>io.quarkus</quarkus.platform.group-id>
    <quarkus.platform.version>1.12.1.Final</quarkus.platform.version>
    <surefire-plugin.version>2.22.1</surefire-plugin.version>
    <testscope>unit</testscope>
...
      <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>${surefire-plugin.version}</version>
        <configuration>
          <groups>${testscope}</groups>
          <systemPropertyVariables>
            <java.util.logging.manager>org.jboss.logmanager.LogManager</java.util.logging.manager>
            <maven.home>${maven.home}</maven.home>
          </systemPropertyVariables>
        </configuration>
      </plugin>
...

Maven 命令:

./mvnw clean test

結果:即使 QuarkusTest 沒有用“unit”注釋,QuarkusTestResource 也會啟動,所以 Quarkus 似乎不知道 Tag Annotation?

Quarkus 測試資源是全球性的,這意味着它無論如何都會運行,即使您的 class 帶有不應運行的標簽的注釋。

為防止這種情況,請嘗試使用注釋 class

@QuarkusTestResource(restrictToAnnotatedClass = true)

來自Quarkus 的網站

測試資源是全局的,即使它們是在測試 class 或自定義配置文件中定義的,這意味着它們都將為所有測試激活,即使我們確實刪除了重復項。 如果您只想在單個測試 class 或測試配置文件上啟用測試資源,您可以使用 @QuarkusTestResource(restrictToAnnotatedClass = true)。

您正在尋找的可能是QuarkusTestProfiletags方法。 請參閱文檔的這一部分

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM