package jp.terasoluna.fw.file.dao.standard; import static org.junit.Assert.assertEquals; import java.io.File; import java.util.HashMap; import org.junit.Test; import jp.terasoluna.fw.file.dao.FileLineWriter; import org.springframework.test.util.ReflectionTestUtils; import org.mockito.Mockito; import static org.junit.Assert.assertSame; /** * {@link jp.terasoluna.fw.file.dao.standard.CSVFileUpdateDAO} クラスのテスト。 * <p> * <h4>【クラスの概要】</h4> CSVファイル用のFileLineWriterを生成する。<br> * AbstractFileUpdateDAOのサブクラス。 * <p> * @see jp.terasoluna.fw.file.dao.standard.CSVFileUpdateDAO */ public class CSVFileUpdateDAOTest { /** * testExecute01() <br> * <br> * (正常系) <br> * 観点:E.F <br> * <br> * 入力値:(引数) fileName:Stringインスタンス<br> * (引数) clazz:Class<T>インスタンス<br> * (状態) AbstractFileUpdateDAO.columnFormatterMap: HashMapインスタンス<br> * <br> * 期待値:(戻り値) fileLineWriter:CSVFileLineWriter<T>インスタンス<br> * (状態変化) CSVFileLineWriter#CSVFileLineWriter():1回呼ばれる。<br> * 呼ばれるときの引数を確認する。<br> * (状態変化) AbstractFileUpdateDAO#getColumnFormatterMap(): 1回呼ばれる<br> * <br> * 正常パターン<br> * 引数がそれぞれnot nullであれば、戻り値が帰ってくることを確認する。 <br> * @throws Exception このメソッドで発生した例外 */ @Test public void testExecute01() throws Exception { // テスト対象のインスタンス化 CSVFileUpdateDAO fileUpdateDAO = Mockito.spy(new CSVFileUpdateDAO()); // 引数の設定 String fileName = "aaa"; Class<CSVFileUpdateDAO_Stub01> clazz = CSVFileUpdateDAO_Stub01.class; // 前提条件の設定 HashMap<String, ColumnFormatter> columnFormatterMap = new HashMap<String, ColumnFormatter>(); columnFormatterMap.put("java.lang.String", new NullColumnFormatter()); ReflectionTestUtils.setField(fileUpdateDAO, "columnFormatterMap", columnFormatterMap); // テスト実施 FileLineWriter<CSVFileUpdateDAO_Stub01> fileLineWriter = fileUpdateDAO .execute(fileName, clazz); // 返却値の確認 assertEquals(CSVFileLineWriter.class, fileLineWriter.getClass()); // 状態変化の確認 Mockito.verify(fileUpdateDAO).getColumnFormatterMap(); assertSame(fileName, ReflectionTestUtils.getField(fileLineWriter, "fileName")); assertSame(clazz, ReflectionTestUtils.getField(fileLineWriter, "clazz")); assertSame(columnFormatterMap, ReflectionTestUtils.getField( fileLineWriter, "columnFormatterMap")); // クローズ処理 fileLineWriter.closeFile(); // テスト後ファイルを削除 File file = new File("aaa"); file.delete(); } }