我刚刚开始一个结合Spring和Apache的项目(这似乎是一个非常好的组合)。
在JUnit 5的测试方面,谷歌推出了此页。如果您想同时使用Spring和Camel的注释(我想要的东西),它建议使用@CamelSpringTest。
在页面的和部分,有关于JUnit 4测试迁移的建议,建议:
@RunWith(CamelSpringRunner.class)的用法应改为@CamelSpringTest .@RunWith(CamelSpringBootRunner.class)的用法应改为@CamelSpringBootTest
我的问题是关于新的项目/测试:两者在使用上有什么不同。
当然,代码是有区别的,但我不知道是出于什么原因:
CamelSpringTest:
@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 {
}CamelSpringBootTest
@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 {
}发布于 2021-07-14 10:20:27
区别很简单:测试是否在SpringBoot项目中运行?
Camel可以用于纯Spring项目(没有启动)。在这样的项目中,您可以扩展CamelSpringTestSupport来编写测试,也可以使用@CamelSpringTest注释。然后为该环境启动并初始化测试。
当您使用SpringBoot项目中的骆驼时,Camel可以利用这个环境进行自动配置等等。因此,您必须使用另一个注释@CamelSpringBootTest来编写测试。见举个例子。
因此,这两个注释只是针对不同项目类型的两个不同的骆驼测试设施的“激活器”。这些只是春天的设施。有关更多的骆驼测试设施,请参阅此页面。
这也是关于骆驼测试的许多困惑的根源。有如此多的测试变体,Spring、SpringBoot、JUnit 4、JUnit 5等等,因此很难知道测试设置的组合需要什么注释。
https://stackoverflow.com/questions/68313960
复制相似问题