테스트(4)
-
[토비의 스프링 3.1] 2.4 스프링 테스트 적용
기존의 테스트코드에서 @Before 메소드가 테스트 메소드 개수만큼 반복된다. @Before public void setUp(){ Application Context ac = new GenericXmlApplicationContext("applicationContext.xml"); this.dao = ac.getBean("userDao", UserDao.class); } 현재 @Before 메소드는 애플리케이션 컨텍스트를 생성하는 코드를 수행하는데, 애플리케이션 컨텍스트는 생성될 때 모든 싱글톤 빈 오브젝트를 초기화한다. 어떤 빈은 오브젝트가 생성될 때 자체적인 초기화 작업을 진행하는 경우도 있다. 이 경우 빈 오브젝트 초기화에 많은 시간이 할애된다. 또, 애플리케이션 컨텍스트가 초기화될 때 어떤 빈은 ..
2022.06.30 -
[토비의 스프링 3.1] 2.2 UserDaoTest 개선
2.2.1 테스트 검증의 자동화 테스트의 결과는 성공과 실패로 나뉜다. 실패는 테스트를 진행하는 동안에 에러가 발생하는 경우와, 에러가 발생하지 않았지만 결과가 기대한 바와 다른 경우로 나뉜다. 전자를 테스트 에러, 후자를 테스트 실패라고 구분한다. 테스트 중 에러가 발생하는 것은 콘솔에 출력되므로 쉽게 확인이 가능하다. 하지만 실패하는 것은 별도의 확인 작업과 그 결과가 있어야 알 수 있다. 테스트 코드를 다음과 같이 변경해보자. if(!user.getName().equals(user2.getName()){ System.out.println("테스트 실패 (name)"); }else if(!user.getPassword().equals(user2.getPassword()){ System.out.prin..
2022.06.09 -
[토비의 스프링 3.1] 2.3 개발자를 위한 테스팅 프레임워크 JUnit
JUnit 프레임워크를 자세히 살펴본다. 스프링의 핵심 기능 중 하나인 스프링 테스트 모듈도 JUnit을 이용한다. 따라서 JUnit은 스프링을 활용하려면 꼭 사용할 줄 알아야 한다. 2.3.1 JUnit 테스트 실행 방법 IDE와 빌드툴로 테스트 실행이 가능한데, IDE가 손쉽고 빠른 테스트를 제공한다. 실행 방법은 따로 포스팅 할 것이 없어 해당 절은 생략한다. 2.3.2 테스트 결과의 일관성 JUnit을 적용해서 테스트 코드를 만들었으나, 아직 개선할 점이 남아있다. 가장 불편했던 점은, 매번 테스트를 실행하기 전에 DB의 USER 테이블 데이터를 지워야 했다는 것이다. 깜빡 잊고 그냥 실행한 경우, 등록된 사용자 정보와 기본키가 중복된다면서 add() 메소드 실행중에 에러가 발생할 것이다. 이 경..
2022.06.03 -
[토비의 스프링 3.1] 2.1 UserDaoTest 다시 보기
스프링이 제공하는 가장 중요한 가치로 객체지향과 테스트를 꼽을 수 있다. 실제로 테스트를 작성할 때 JUnit 프레임워크를 사용했는데 손쉽게 사용할 수 있었다. 2장에서는 테스트의 가치, 활용 전략, 스프링과의 관계를 살펴본다. 2.1.1 테스트의 유용성 기존 1장에서 개발한 UserDao가 잘 동작하는지 확인하기 위해 테스트 코드를 작성했었다. main() 메소드를 이용해 UserDao를 직접 호출해서 add(), get() 메소드의 결과를 System.out.println()으로 콘솔에 출력해 눈으로 확인했었다. 웹을 통한 DAO 테스트 방법의 문제점 DAO를 테스트하고 싶은데 서비스, MVC 프레젠테이션 계층 등을 작성하고 테스트용 웹 서버에 배치한 뒤, 폼을 띄워 값을 입력해야 한다면 당연히 제대..
2022.06.01