【问题标题】:@primary annotation is not working for JUnit tests@primary 注解不适用于 JUnit 测试
【发布时间】:2019-10-20 03:45:59
【问题描述】:

我有一个 Spring 应用程序,我在其中使用 EasyMock 在 JUnit 测试中进行模拟。

我在下面定义了三个类(比如说 A、B 和 C)。

@Named("A")
@Primary
public class A {
}

@Named("B")
public class B extends A {
}

public class C {
  @Inject
  private A a; // It should inject A instance here since it is marked as primary
}


public class CTest {

@Mock
private A a;// Here I'm getting exception
}

当我在 CTest 类中运行测试时,出现错误 预期单个匹配 bean,但找到 2:(A 和 B)。

为什么@primary 注释在这里不起作用。

【问题讨论】:

标签: java spring


【解决方案1】:

看起来您可能需要以下配置。

spring.main.allow-bean-definition-overriding=true

如果覆盖仅用于测试,您可以在测试配置文件中尝试。

参考-https://github.com/spring-projects/spring-boot/wiki/Spring-Boot-2.1-Release-Notes#bean-overriding

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-04-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-21
    • 2012-01-19
    • 2022-01-08
    • 2020-04-27
    相关资源
    最近更新 更多