@Test
public void testResolveApplicationContext01() throws Exception {

    BatchJobData batchJobData = new BatchJobData();
    batchJobData.setJobAppCd("B000001");
    // テスト実行（１回目）
    ApplicationContext blogicContextFirst = applicationContextResolver
            .resolveApplicationContext(batchJobData);
    assertThat(logger.getLoggingEvents(), is(asList(info(
            "[IAL025019] BLogic context will be cached. jobAppCd:B000001"))));
    logger.clear();
    // テスト実行（２回目）
    ApplicationContext blogicContextSecond = applicationContextResolver
            .resolveApplicationContext(batchJobData);
    // 業務コンテキスト生成ログが出力されないこと。
    assertFalse(logger.getLoggingEvents().contains(info(
            "[IAL025019] BLogic context will be cached. jobAppCd:B000001")));
    logger.clear();
    // キャッシュされたコンテキストとインスタンスが同一であること。
    assertThat(blogicContextSecond, is(blogicContextFirst));
    batchJobData.setJobAppCd("B000002");
    // テスト実行（別の業務コンテキストを生成 １回目）
    ApplicationContext anotherContextFirst = applicationContextResolver
            .resolveApplicationContext(batchJobData);
    assertThat(logger.getLoggingEvents(), is(asList(info(
            "[IAL025019] BLogic context will be cached. jobAppCd:B000002"))));
    logger.clear();
    // テスト実行（別の業務コンテキストを生成 ２回目）
    ApplicationContext anotherContextSecond = applicationContextResolver
            .resolveApplicationContext(batchJobData);
    // 業務コンテキスト生成ログが出力されないこと。
    assertFalse(logger.getLoggingEvents().contains(info(
            "[IAL025019] BLogic context will be cached. jobAppCd:B000002")));
    // キャッシュされたコンテキストとインスタンスが同一であること。
    assertThat(anotherContextSecond, is(anotherContextFirst));
    // キャッシュされたB000001とB000002のコンテキストのインスタンスが異なっていること。
    assertThat(blogicContextSecond, not(anotherContextSecond));
}