【问题标题】:Quarkus does not @Inject beans in @QuarkusTest suiteQuarkus 不在 @QuarkusTest 套件中 @Inject bean
【发布时间】:2021-02-10 15:08:14
【问题描述】:

我是 Quarkus 的新手,但我非常精通其他 IoC 框架(Spring)。我有一个声明如下的bean

@ApplicationScoped
public class TestingRepo {
    public String greet() {
        return "Hi";
    }
}

我也有一个看起来像这样的 Quarkus 测试

@QuarkusTest
public class InjectionTest {

    @Inject
    public TestingRepo tr;

    @Test
    public void testInjection() {
        Assertions.assertNotNull(tr);
    }
}

当我做mvn test 时,我得到了:

[ERROR] testInjection  Time elapsed: 0.006 s  <<< FAILURE!
org.opentest4j.AssertionFailedError: expected: not <null>
     at org.mytest.InjectionTest.testInjection(InjectionTest.java:25)

我缺少什么?我期待注入 bean 而不是 null! 感谢您的帮助。

【问题讨论】:

  • 这看起来是正确的。你有一个完整但最小的复制器吗?
  • 不是真的,我正在尝试这样做...似乎quarkus-maven-plugin:1.11.1.Final 现在也无法构建新项目,仅使用1.11.2.Final 似乎工作但另一个版本...我会尝试旧方式,重启并重试
  • 你能看一下应用程序启动日志(即使有测试你仍然可以得到),看看是否有任何堆栈跟踪表明注入失败?

标签: java unit-testing testing quarkus


【解决方案1】:

@QuarkusTest 仅从 JUnit Jupiter 开始。

您的示例中没有导入行,但我猜您有:

import org.junit.Test;

改成

import org.junit.jupiter.api.Test;

会解决你的问题。

【讨论】:

    【解决方案2】:

    遇到同样的问题 - 并导入 org.junit.jupiter.api.Test;已经在那里了。

    但我注意到 VSCode - 无论出于何种原因 - 已导入

    import com.google.inject.Inject;
    

    改成

    import javax.inject.Inject;
    

    解决了这个问题。注入的 Bean 不再为空。

    【讨论】:

    • 这种事一直发生在我身上!
    【解决方案3】:

    我在 Quarkus 单元测试中遇到了同样的问题。我找到了适合我目前情况的解决方法,可能在这里有效。

    我有一个带有多个 @Produces 方法的配置类和一个将其中一个作为字段注入的单元测试。只有@Produces@Inject,该字段仍然是null。将@Named 添加到方法和注入点修复它。

    @ApplicationScoped
    public class MyConfig {
       @Produces
       @Named("mySpecialBean")
       public MySpecialBean mySpecialBean() {
          return new MySpecialBean();
       }
    }
    
    @QuarkusTest
    public class MyTest {
       @Inject
       @Named("mySpecialBean")
       MySpecialBean mySpecialBean;
    
      ...
    }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2022-07-05
      • 2021-12-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-09-23
      • 2016-07-09
      • 1970-01-01
      相关资源
      最近更新 更多