第 6 章 将拦截器应用到测试


Quarkus 测试是完整的 CDI Bean,因此您可以像通常一样应用 CDI 拦截器。例如,如果您希望测试方法在事务的上下文中运行,您可以将 @Transactional 注释应用到该方法。您还可以创建自己的测试 stereotypes。

流程

  1. quarkus-narayana-jta 依赖项添加到 pom.xml 文件中:

    <dependency>
        <groupId>io.quarkus</groupId>
        <artifactId>quarkus-narayana-jta</artifactId>
    </dependency>
    Copy to Clipboard Toggle word wrap
  2. 确保 TransactionalQuarkusTest.java 包括以下导入语句:

    package org.acme.quickstart;
    
    import java.lang.annotation.ElementType;
    import java.lang.annotation.Retention;
    import java.lang.annotation.RetentionPolicy;
    import java.lang.annotation.Target;
    
    import javax.enterprise.inject.Stereotype;
    import javax.transaction.Transactional;
    
    import io.quarkus.test.junit.QuarkusTest;
    Copy to Clipboard Toggle word wrap
  3. 创建 @TransactionalQuarkusTest 注释:

    @QuarkusTest
    @Stereotype
    @Transactional
    @Retention(RetentionPolicy.RUNTIME)
    @Target(ElementType.TYPE)
    public @interface TransactionalQuarkusTest {
    }
    Copy to Clipboard Toggle word wrap
  4. 将此注解应用到一个测试类,它的行为如同您应用了 @QuarkusTest@Transactional 注解一样:

    @TransactionalQuarkusTest
    public class TestStereotypeTestCase {
    
        @Inject
        UserTransaction userTransaction;
    
        @Test
        public void testUserTransaction() throws Exception {
            Assertions.assertEquals(Status.STATUS_ACTIVE, userTransaction.getStatus());
        }
    
    }
    Copy to Clipboard Toggle word wrap

    这是一个简单的测试,在不使用 HTTP 的情况下直接评估问候服务。

Red Hat logoGithubredditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。 了解我们当前的更新.

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

Theme

© 2026 Red Hat
返回顶部