private UserDao dao; //인스턴스 변수
@Before //-> 메소드 호출 필요 없이 알아서 실행됨
public void setUp() {
ApplicationContext ac = new GenericXmlApplicationContext("applicationContext.xml");
this.dao = ac.getBean("userDao", UserDao.class);
}
private UserDao dao;
private User user1;
private User user2;
private User user3;
@Before
public void setUp() {
ApplicationContext ac = new GenericXmlApplicationContext("applicationContext.xml");
this.dao = ac.getBean("userDao", UserDao.class);
this.user1 = new User("gyumee", "박성철", "springno1");
this.user2 = new User("leegw700", "이길원", "springno2");
this.user3 = new User("bumjin", "박범진", "springno3");
}
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations="/applicationContext.xml")
public class UserDaoTest {
@Autowired
private ApplicationContext ac;
@Autowired
UserDao dao; //UserDao 타입 빈을 직접 DI받음
...
}
@DirtiesContext : 해당 클래스의 테스트에서 애플리케이션 컨텍스트의 상태를 변경한다는 것을 알려주며, 이 애노테이션이 붙은 테스트 클래스에는 애플리케이션 컨텍스트를 공유 하지 않음
테스트를 위한 별도의 DB 설정 구성
dao = new UserDao();
DataSource dataSource = new SingleConnectionDataSource("jdbc://mysql://localhost/test", "test", "test", true)
dao.setDataSource(datasource);