본문 바로가기

Spring

토비의 스프링3.1 예제실습4 - JUnit4와 JUnit5

책 예제를 따라서 main() 메소드를 통한 테스트를 JUnit을 통한 테스트로 변환하는 과정중에서

assertThat을 작성하다보면 아니면 그전에 @Test를 작성하면서

import org.junit.* 이 import 되지 않는 경우가 발생한다

IntelliJ에서 Gradle을 통해서 실습을 진행하고 있으며 build.gradle에서 dependencies 부분에

testCompileOnly 'junit:junit:4.12'
testRuntimeOnly 'org.junit.vintage:junit-vintage-engine:5.8.1'

위 내용을 추가해주고 변경내용을 적용한뒤에 다시 import를 하면 정상적으로 되는 것을 알 수 있다

하지만 보시다시피 junit4 버전으로 안내되는 문서에도 Enabling Support for Old Versions 이라고 나와 있다

JUnit5 버전을 보면 dependencies에 해당 내용을 추가한다

 

dependencies {
testImplementation 'org.junit.jupiter:junit-jupiter-api:5.8.1'
testRuntimeOnly 'org.junit.jupiter:junit-jupiter-engine:5.8.1'
}

 

JUnit4에서는 assertThan(parm1, is(value)); 를 통해 데이터를 비교하고 테스트 했지만

JUnit5에서는 assertEquals를 이용해 기대값과 결과값이 같은지 비교한다

 

JUnit4에서는 @Test(expected = 예외클래스) 를 통해 테스트중 발생할 예외클래스를 지정하지만

JUnit5에서는  assertThrows를 통해서 예외클래스를 테스트 한다

@Test
public void getUserFailure() throws SQLException, ClassNotFoundException {
	ApplicationContext context = new AnnotationConfigApplicationContext(DaoFactory.class);

	UserDAO dao = context.getBean("userDAO", UserDAO.class);
	dao.deleteAll();
	assertThat(dao.getCount()).isEqualTo(0);

	assertThrows(EmptyResultDataAccessException.class, () -> {
		dao.get("unkown_id");
	});
}

 

 

https://www.baeldung.com/junit-5-gradle