der*_*itz 4 spring apache-camel spring-boot
我刚刚开始一个结合 Spring Boot 和 Apache Camel 的项目(这似乎是一个非常好的组合)。
关于使用 JUnit 5 进行测试,Google 提供了此页面。@CamelSpringTest
如果您想同时拥有 Spring 和 Camel 的注释(我想要的),建议使用。
在页面的 和 处,有关于 JUnit 4 测试迁移的建议:
@RunWith(CamelSpringRunner.class) 的用法应替换为 @CamelSpringTest ... @RunWith(CamelSpringBootRunner.class) 的用法应替换为 @CamelSpringBootTest
我的问题是针对新项目/测试:两者在使用方面有什么区别。
代码当然存在差异,但我不知道原因是什么:
骆驼弹簧测试:
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
@ExtendWith(SpringExtension.class)
@BootstrapWith(CamelTestContextBootstrapper.class)
@TestExecutionListeners(
value = {
CamelSpringTestContextLoaderTestExecutionListener.class,
StopWatchTestExecutionListener.class
},
mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
public @interface CamelSpringTest {
}
Run Code Online (Sandbox Code Playgroud)
CamelSpringBoot测试
@Documented
@Retention(RetentionPolicy.RUNTIME)
@Target({ ElementType.TYPE })
@ExtendWith(SpringExtension.class)
@TestExecutionListeners(
value = {
CamelSpringTestContextLoaderTestExecutionListener.class,
CamelSpringBootExecutionListener.class,
StopWatchTestExecutionListener.class
},
mergeMode = TestExecutionListeners.MergeMode.MERGE_WITH_DEFAULTS)
public @interface CamelSpringBootTest {
}
Run Code Online (Sandbox Code Playgroud)
区别很简单:测试是否在 SpringBoot 项目中运行?
Camel可以在纯Spring项目中使用(无需Boot)。在这样的项目中,您可以扩展CamelSpringTestSupport
以编写测试,也可以使用@CamelSpringTest
注释。然后针对该环境启动并初始化测试。
当您在 SpringBoot 项目中使用Camel 时,Camel 可以通过自动配置等方式利用该环境。因此您必须使用另一个注释 @CamelSpringBootTest
来编写测试。请参阅此处的示例。
因此,这两个注释只是针对不同项目类型的两个不同 Camel 测试工具的“激活器”。这些只是 Spring 设施。请参阅本页了解更多 Camel 测试设施。
这也是围绕 Camel 测试的许多困惑的根源。有如此多的测试变体,Spring、SpringBoot、JUnit 4、JUnit 5 等。很难知道哪些测试设置组合需要哪些注释。
归档时间: |
|
查看次数: |
2726 次 |
最近记录: |