为什么可以';我的spring cloud stream mockito测试自动连接我的处理器吗?
我正在尝试为我的SpringCloudStream项目创建测试。我创建了自己的BizSyncProcessor接口,而不是使用默认处理器,这似乎在所有文档中都有。我以前用测试做过此类项目,但不记得是否同时使用了mockito,所以我想知道这是否是问题所在,因为我正在使用@RunWith(MockitoJUnitRunner.class)而不是@RunWith(SpringRunner) 在我将rabbit实现作为依赖项包含在maven中之前,我也有 IntelliJ在@Autowired BizzyncProcessor上标记错误,表示“找不到BizzyncProcessor类型的bean”。但是,我能够运行测试,因此它可以编译,但运行测试时bizSyncProcessor为null 我之所以包括mockito,是因为侦听消息的处理程序调用了另一个服务(SFISClient),所以我模拟了该调用 这是我的测试:为什么可以';我的spring cloud stream mockito测试自动连接我的处理器吗?,mockito,spring-cloud-stream,Mockito,Spring Cloud Stream,我正在尝试为我的SpringCloudStream项目创建测试。我创建了自己的BizSyncProcessor接口,而不是使用默认处理器,这似乎在所有文档中都有。我以前用测试做过此类项目,但不记得是否同时使用了mockito,所以我想知道这是否是问题所在,因为我正在使用@RunWith(MockitoJUnitRunner.class)而不是@RunWith(SpringRunner) 在我将rabbit实现作为依赖项包含在maven中之前,我也有 IntelliJ在@Autowired Biz
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT)
@EnableAutoConfiguration
@Configuration
@EnableBinding(BizSyncProcessor.class)
public class UpdatedBusinessHandlerTest {
@Autowired
private BizSyncProcessor bizSyncProcessor;
@Autowired
private MessageCollector messageCollector;
@Mock
SFISClient sfisClient;
@InjectMocks
UpdatedBusinessHandler updatedBusinessHandler;
@Test
public void testWiring() throws Exception {
UpdatedBusinessAlert updatedBusinessAlert = new UpdatedBusinessAlert();
updatedBusinessAlert.setBusinessId(UUID.randomUUID());
Message<UpdatedBusinessAlert> updatedBusinessAlertMessage = MessageBuilder.withPayload(updatedBusinessAlert).build();
bizSyncProcessor.writeUpdatedBusinessIds().send(updatedBusinessAlertMessage);
Message<BusinessFlooringSummary> businessFlooringSummaryMessage = (Message<BusinessFlooringSummary>) messageCollector.forChannel(bizSyncProcessor.writeFlooringSummaries()).poll();
BusinessFlooringSummary businessFlooringSummary = businessFlooringSummaryMessage.getPayload();
assertNotNull(businessFlooringSummary);
}
}
@RunWith(MockitoJUnitRunner.class)
@SpringBootTest(webEnvironment=SpringBootTest.webEnvironment.RANDOM\u端口)
@启用自动配置
@配置
@EnableBinding(BizSyncProcessor.class)
公共类UpdatedBusinessHandlerTest{
@自动连线
专用BizSyncProcessor BizSyncProcessor;
@自动连线
私有消息收集器消息收集器;
@嘲弄
SFISClient SFISClient;
@注射模拟
UpdatedBusinessHandler UpdatedBusinessHandler;
@试验
public void testwilling()引发异常{
UpdatedBusinesAlert UpdatedBusinesAlert=新建UpdatedBusinesAlert();
updatedBusinessAlert.setBusinessId(UUID.randomUUID());
Message updatedBusinessAlertMessage=MessageBuilder.withPayload(updatedBusinessAlert.build();
bizSyncProcessor.WriteUpdatedBusinessId().send(updatedBusinessAlertMessage);
Message businessFlooringSummaryMessage=(Message)messageCollector.forChannel(bizSyncProcessor.writeFlooringSummaries()).poll();
BusinessFloorringSummary BusinessFloorringSummary=BusinessFloorringSummaryMessage.getPayload();
assertNotNull(BusinessFloorringSummary);
}
}
在您的案例中,@SpringBootTest
和所有基于Spring的东西都不起作用,因为您没有使用@RunWith(SpringRunner)
。没有什么东西能弄到那些弹簧钩
另一方面,没有理由使用MockitoJUnitRunner
。您可以简单地依赖@MockBean
来代替SFISClient
:SpringBootTest
和所有基于Spring的东西在您的案例中都不起作用,因为您不使用@RunWith(SpringRunner)
。没有什么东西能弄到那些弹簧钩
另一方面,没有理由使用MockitoJUnitRunner
。您只需依赖@MockBean
即可获得您的SFISClient
:谢谢;我错误地认为MockitoJUnitRunner扩展了SpringRunner,或者以某种方式引入了基本Spring上下文;我错了,谢谢;我错误地认为MockitoJUnitRunner扩展了SpringRunner,或者以某种方式引入了基本Spring上下文;我错了