无法在测试上下文中注入spring状态机(没有jpastatemachinerepository类型的合格bean)

lsmepo6l  于 2021-08-20  发布在  Java
关注(0)|答案(0)|浏览(268)

我正在编写一个测试用例来注入我的spring状态机的一个示例,并输入一些事件,但到目前为止,没有任何东西能够使它正确地启动上下文
状态机配置

  1. @Configuration
  2. @EnableStateMachineFactory(contextEvents = false)
  3. @RequiredArgsConstructor
  4. @Slf4j
  5. public class StateMachineConfig
  6. extends EnumStateMachineConfigurerAdapter<ExecutionStates, ExecutionEvents> {
  7. private final AbstractStateMachineMonitor stateMachineMonitor;
  8. private final StateMachineRuntimePersister<Events, States, String> stateMachineRuntimePersister;
  9. @Override
  10. public void configure(final StateMachineConfigurationConfigurer<Events, States> config)
  11. throws
  12. Exception {
  13. config.withConfiguration()
  14. .listener(new StateMachineListenerAdapter<>());
  15. config.withMonitoring()
  16. .monitor(stateMachineMonitor);
  17. config.withPersistence()
  18. .runtimePersister(stateMachineRuntimePersister);
  19. super.configure(config);
  20. }
  21. @Override
  22. public void configure(final StateMachineStateConfigurer<Events, States> states)
  23. throws
  24. Exception {
  25. states.withStates().initial(ExecutionStates.INITED, initialAction()).end(ExecutionStates.COMPLETED)
  26. .states(EnumSet.allOf(ExecutionStates.class));
  27. }
  28. @Override
  29. public void configure(final StateMachineTransitionConfigurer<Events, States> transitions)
  30. throws
  31. Exception {
  32. transitions
  33. .withExternal()
  34. .source(ExecutionStates.INITED).target(ExecutionStates.COMPLETED)
  35. .event(ExecutionEvents.COMPLETE);
  36. }

持久性配置

  1. @Configuration
  2. public class StateMachinePersistenceConfiguration {
  3. @Bean
  4. public StateMachineRuntimePersister<Events, States, String> stateMachineRuntimePersister(
  5. final JpaStateMachineRepository jpaStateMachineRepository) {
  6. return new JpaPersistingStateMachineInterceptor<>(jpaStateMachineRepository);
  7. }

}
失败测试

  1. @RunWith(SpringRunner.class)
  2. @SpringBootTest(classes = { StateMachineConfig.class, StateMachineMonitor.class, StateMachinePersistenceConfiguration.class})
  3. @ContextConfiguration(classes = {StateMachinePersistenceConfiguration.class})
  4. class Test {
  5. @Autowired
  6. private StateMachine<Events, States> machine;
  7. @Test
  8. public void testInitialState() throws Exception {
  9. StateMachineTestPlan<Events, States> plan =
  10. StateMachineTestPlanBuilder.<Events, States>builder()
  11. .defaultAwaitTime(2)
  12. .stateMachine(machine1)
  13. .step()
  14. .expectStateChanged(1)
  15. .expectStateEntered(Events.INIT)
  16. .and()
  17. .build();
  18. plan.test();
  19. }

依赖关系
java 11
Spring Boot2.4.2Spring Boot启动器数据jpa 2.4.2
Spring状态机自动配置、启动器数据jpa、Spring状态机启动器和Spring状态机测试2.4.0
少年5
任何帮助都将不胜感激

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题