@Test
public void testEndTransactions03() throws Exception {

    // テスト入力データ設定
    Map<String, PlatformTransactionManager> tranMap = new HashMap<String, PlatformTransactionManager>();
    PlatformTransactionManagerStub4 tran = new PlatformTransactionManagerStub4();
    tranMap.put("tran1", tran);
    tranMap.put("tran2", tran);
    tranMap.put("tran3", tran);
    tranMap.put("tran4", tran);
    // TransactionStatusは全てロールバックされることを想定し、順序がtranMapのputと逆順で実施されること。
    Map<String, TransactionStatus> statMap = new LinkedHashMap<String, TransactionStatus>();
    TransactionStatusStub stat1 = new TransactionStatusStub();
    stat1.setName("stat1");
    stat1.setRollbackOnly();
    TransactionStatusStub stat2 = new TransactionStatusStub();
    stat2.setName("stat2");
    stat2.setRollbackOnly();
    TransactionStatusStub stat3 = new TransactionStatusStub();
    stat3.setName("stat3");
    stat3.setRollbackOnly();
    TransactionStatusStub stat4 = new TransactionStatusStub();
    stat4.setName("stat4");
    stat4.setRollbackOnly();
    statMap.put("tran1", stat1);
    statMap.put("tran2", stat2);
    statMap.put("tran3", stat3);
    statMap.put("tran4", stat4);
    // テスト実施
    boolean result = BatchUtil.endTransactions(tranMap, statMap, log);
    // 結果検証
    assertTrue(result);
    List<TransactionStatus> statList = tran.getStatusList();
    // statMapのputと逆順でロールバックされていること。
    assertEquals("stat4", ((TransactionStatusStub) statList.get(0))
            .getName());
    assertEquals("stat3", ((TransactionStatusStub) statList.get(1))
            .getName());
    assertEquals("stat2", ((TransactionStatusStub) statList.get(2))
            .getName());
    assertEquals("stat1", ((TransactionStatusStub) statList.get(3))
            .getName());
}