백엔드/토비의 스프링

[토비의 스프링] 2.2 UserDaoTest 개선

한뜽규 2025. 5. 18. 00:52
728x90

우선 테스트 결과를 검증하는 부분을 자동화로 만들어보자.

이 테스트에서는 add()로 전달한 사용자의 정보와 get()으로 조회하는 사용자의 정보가 일치하는지 검증한다.

 

기존에는 단순하게 로그를 확인해 테스트의 결과를 확인했다면, 이것을 코드로 성공과 실패여부를 출력하도록 만들어보자.

 

public class Main {
    public static void main(String[] args) throws ClassNotFoundException, SQLException {

        ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");

        UserDao userDao = context.getBean("userDao", UserDao.class);


        User createdUser = new User();
        createdUser.setId("seungkyu");;
        createdUser.setName("승규");
        createdUser.setPassword("password");

        userDao.add(createdUser);

        System.out.println(createdUser.getId() + "계정을 등록했습니다.");

        User readUser = userDao.get("seungkyu");

        if(!readUser.getName().equals(createdUser.getName()))
        {
            System.out.println("테스트 실패 - name");
        }
        else if(!readUser.getPassword().equals(createdUser.getPassword()))
        {
            System.out.println("테스트 실패 - password");
        }
        else
        {
            System.out.println("조회 테스트 성공");
        }
    }
}

 

이렇게 결과를 비교하여 테스트의 결과를 확인하고, 그에 맞는 결과를 출력한다.

이러면 출력된 로그에 따라 적절한 대응만 하면 된다.

 

굉장히 좋은 테스트이다.

하지만 main() 메서드를 이용한 테스트 작성법으로는 규모가 커지고 테스트의 수가 많아지면, 부담이 될 것이다.

 

그렇기에 JUnit을 사용해본다.

JUnit은 프레임워크로 IoC를 사용해 main() 메서드에 직접 제어권을 작성해 작성할 필요가 없도록 한다.

 

class UserDaoTest {

    @Test
    public void addAndGet() throws SQLException, ClassNotFoundException {
    	//테스트 코드
    }
}

 

이렇게 test 패키지에 test관련 종속성을 추가하고, 해당 메서드에 @Test annotation을 추가한 후 코드를 옮겨적어주면 된다.

그러면 이렇게 초록색으로 결과가 나오게된다.

 

다른 방법으로 검증 할 수는 없을까?

지금 이 방법도 결국 우리가 눈으로 로그를 확인해야 하는 것이다.

JUnit에서는 이런 검증을 할 수 있도록 matcher를 제공한다.

첫번째와 두번째의 파라미터를 비교하여 결과를 만들어주는 기능이다.

 

    @Test
    public void addAndGet() throws SQLException, ClassNotFoundException {

        ApplicationContext context = new GenericXmlApplicationContext("applicationContext.xml");

        UserDao userDao = context.getBean("userDao", UserDao.class);

        User createdUser = new User();
        createdUser.setId("seungkyu");;
        createdUser.setName("승규");
        createdUser.setPassword("password");

        userDao.add(createdUser);

        System.out.println(createdUser.getId() + "계정을 등록했습니다.");

        User readUser = userDao.get("seungkyu");

        Assertions.assertEquals(createdUser.getId(), readUser.getId());
        Assertions.assertEquals(createdUser.getName(), readUser.getName());
        Assertions.assertEquals(createdUser.getPassword(), readUser.getPassword());
    }

 

이렇게 Assertions에서 제공하는 메서드들로 값을 검증하면 된다.

 

만약 실패한다면

이런 식으로 결과가 나오게 된다.

 

일단 간단하게 테스트를 알아보았고, 다음부터 JUnit에 대해서 더 깊게 공부해보도록 하자