gpt4 book ai didi

unit-testing - @Autowired、@Component 和测试

转载 作者:行者123 更新时间:2023-11-28 19:50:45 26 4
gpt4 key购买 nike

您将如何集成 测试注解配置和组件扫描且根本没有 XML 配置的 spring 应用程序?我遇到了用测试组件替换生产组件的需要,而实际上没有对所有@autowired 部分求助于 xml 配置或反射注入(inject)。

例子:

interface A {...}

@Component
class AImpl implements A {
...
}


interface B {...}

@Component
class BImpl implements B {
@Autowired A a;
...
}


interface C {...}

class CImpl implements C {
@Autowired B b;
...
}

然后在我的测试中我想使用 ATestImpl,但我只能访问 C(集成测试 C)。

你会怎么做?

最佳答案

利用@Primary注解:

@Service
@Primary
public class TestA implements A {
//...
}

如果有多个 bean 实现了 A,Spring 将更喜欢用 @Primary 注释的那个。如果将 TestA 类放在 /src/test/java 中,它只会在测试执行期间被拾取,在正常上下文启动时 Spring 不会看到 TestA 并仅使用可用的 AImpl

关于unit-testing - @Autowired、@Component 和测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6670557/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com