私は春の起動アプリケーションがうまく動作しますが、統合テストで作業を開始したとき、プロジェクトに循環依存があることがわかりました:標準アプリケーション起動時に表示されない統合テストで例外を削除する
@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;
}
それは私のコードではありませんし、私は今、それを書き換えする準備ができていないです。しかし、それは生産において完璧に機能する。私の統合テスト
@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();
}
}
で、私は例外をキャッチ:
エラー名でBeanを作成する「crowdManagerSyncService」:要求された豆は、作成中です。解決できない循環参照はありますか?
ですから、私の質問は、このひどい循環依存性を取り除かずにこの問題をテストする際に、この問題を省略することです。本番環境でうまくいくので、コードを変更せずにテストコンテキストを開始する方法があることは確かです。
スタックトレースを添付できますか?春のブートバージョン... – Babl
@Bablここに私のスタックトレースです:http://pastebin.com/VYXh0vgh – Solorad