@DataJpaTest
public class TransactionRepositoryImpl extends DummyObject {
@Autowired
private UserRepository userRepository;
@Autowired
private AccountRepository accountRepository;
@Autowired
private TransactionRepository transactionRepository;
@BeforeEach
public void setUp() {
dataSetting();
}
@Test
public void dataJpt_test1() {
List<Transaction> transactionList = transactionRepository.findAll();
transactionList.forEach((transaction) -> {
System.out.println("테스트 : " + transaction.getId());
System.out.println("테스트 : " + transaction.getSender());
System.out.println("테스트 : " + transaction.getReceiver());
System.out.println("테스트 : " + transaction.getGubun());
System.out.println("테스트 : ===============================");
});
}
1 ~ 10 까지 계속 증가, 테스트가 2개로 분리되어 있는데도
JPA 테스트 할 때는 truncate를 사용 못함, 즉 아래의 코드(@Sql)를 사용하지 못하는 것
JPA 테스틑 자동 truncate가 되지 않기 떄문에 직접 nativeQuery로 작성해서 초기화 시키기. 따라서 EntityManager 끌고오기
@ActiveProfiles("test")
@DataJpaTest
public class TransactionRepositoryImpl extends DummyObject {
@Autowired
private UserRepository userRepository;
@Autowired
private AccountRepository accountRepository;
@Autowired
private TransactionRepository transactionRepository;
@Autowired
private EntityManager em;
@BeforeEach
public void setUp() {
autoIncrementReset();
dataSetting();
}
.
.
.
private void autoIncrementReset() {
em.createNativeQuery("ALTER TABLE user_tb ALTER COLUMN id RESTART WITH 1").executeUpdate();
em.createNativeQuery("ALTER TABLE account_tb ALTER COLUMN id RESTART WITH 1").executeUpdate();
em.createNativeQuery("ALTER TABLE transaction_tb ALTER COLUMN id RESTART WITH 1").executeUpdate();
}
전체 테스트