잘 작동하는 스프링 부팅 응용 프로그램이 있지만 통합 테스트를 시작할 때 프로젝트에 순환 종속성이 있음을 발견했습니다.표준 응용 프로그램 시작시 표시되지 않는 통합 테스트에서 예외를 제거합니다.
@Service
public class CrowdManagerSyncService {
private final CrowdManagerSyncScheduler crowdManagerSyncScheduler;
@Autowired
public CrowdManagerSyncService(CrowdManagerSyncScheduler crowdManagerSyncScheduler) {
this.crowdManagerSyncScheduler = Objects.requireNonNull(crowdManagerSyncScheduler);
}
}
그리고
@Component
public class CrowdManagerSyncScheduler {
@Autowired
private CrowdManagerSyncService crowdManagerSyncService;
}
그것은 내 코드가 아닙니다 나는 지금 그것을 다시 할 준비가 아닙니다. 그러나 생산 과정에서 완벽하게 작동합니다. 확인할 수없는 순환 참조가 있습니까 : 창조 현재 콩 요청 :
오류 'crowdManagerSyncService'이름을 가진 bean 작성 :
@RunWith(SpringRunner.class) @WebMvcTest(UserController.class) @WithMockUser(roles={"ADMIN"}) @ContextConfiguration(classes = {AdminConsoleApplication.class, DataSourceAutoConfiguration.class, MockMvcAutoConfiguration.class, MockMvcWebDriverAutoConfiguration.class}) public class UserControllerTest { @Autowired private MockMvcHtmlUnitDriverBuilder builder; private WebDriver webDriver; @Before public void setUp() throws Exception { webDriver = builder.build(); } }
내 통합 테스트에서 나는 예외를 잡아?
그럼, 내 질문은 : 어떻게 그 끔찍한 순환 종속성을 제거하지 않고 테스트 에이 문제를 생략합니다? 프로덕션 환경에서 잘 작동하므로 코드를 변경하지 않고 테스트 컨텍스트를 시작할 수있는 방법이 있습니다.
스택 추적을 첨부 할 수 있습니까? 봄 부팅 버전 ... – Babl
@Babl 여기 내 스택 추적 : http://pastebin.com/VYXh0vgh – Solorad