JUnit

    [Spring]JUnit에서 Async메소드의 비정상적인 종료 - 1편

    [Spring]JUnit에서 Async메소드의 비정상적인 종료 - 1편

    API를 만드는 중에 JUnit으로는 Async로 된 메소드가 제대로 작동을 하지 않고 실제 프로그램을 구동시켰을 때 메소드가 정상적으로 작동하는걸 확인했다. 해당 상황을 재현해보고 분석해보는 시간을 가지겠다. 상황은 다음과 같다. Controller에서 Service layer에 있는 메소드를 총 N 번 호출한다. Service Layer의 해당 메소드는 비동기로 처리가 되고 해당 메소드는 0부터 100까지 Count를 한다. 매 카운트마다 100밀리초를 Thread.sleep을 한다. 사실상 코드는 아무 문제가 없어 보인다. 코드는 다음과 같다. 1. Controller public class AdminController { @Autowired TestService testService; @PostM..

    [Spring]@Transactional과 JUnit Test

    [Spring]@Transactional과 JUnit Test

    JUnit으로 테스트 케이스를 만들어 실험을 하다가 h2 데이터베이스를 사용했을 때는 되던것이 로컬 MySQL서버와 연결하니 되지 않았다. 문제는 primary key가 reset이 되지 않고 @Transaciton에 대한 이해가 부족하여 많은 문제가 발생했기 때문이다. 이에 @Transactional에 대해 정리해보려고 한다. 다음 글은 두가지 질문에 답을 하고자 한다. 1. JUnit에서 @Before~과 @After의 트랜잭션 범위는? 2. JUnit에서 @Transaction에서는 롤백이 되는데 다른 곳에서는 @Transaction은 롤백이 되지 않을까? 트랜잭션 트랜잭션이란 데이터 베이스의 상태를 변화시키기 해서 수행하는 작업의 단위를 뜻한다. 작업의 단위는 단순히 SQL의 질의어 하나만이 아닌..