web/Junit 6

Junit5 Test Container사용하여 테스트 환경 구축하기 (인프런 백기선님 강의 정리)

도커와 테스트 (TestContainers) 테스트를 위해서는 운영과 동일한 형태의 개발 환경에서 테스트 하는 것이 중요하다. 하지만 매번 동일하게 환경을 구축할 수 없고 모든 개발 자들과 같은 환경을 맞추기도 쉽지 않다. 그래서 Docker를 이용해서 테스트마다 테스트를 위한 컨테이너를 실행시켜서 테스트하고 컨테이너를 제거해주면 좋은데 그런 기능을 TestContainer를 이용해서 가능하다. 실제로 이번에 이직한 회사에서 동일하게 테스트 환경을 사용하는 것을 봤다. 막연하게 그 기능을 사용할 수 있었지만 이번 Junit5 백기선님 강의를 들어서 확실하게 정리할 수 있어서 좋았다. 역시 듣길 잘했다. 꼭 들어보길 강추한다. 그럼 그 내용을 정리해보자. 테스트 컨테이너(Test Container) 라이브..

web/Junit 2019.12.26

Spring Junit5 test Mockito (백기선님 인프런 강의)

mockito는 실제 객체와 비슷하게 동작하도록 하여 검증할 수 있는 방법을 제공해주는 라이브러리 이다. spring-boot-starter-test 모듈에 기본적으로 포함되어 있으며, 이 모듈을 사용하지 않을 경우 mockito-core, mockito-junit-jupiter 모듈을 추가하면 된다. Mock 객체 만들기 Mock 객체를 만들어서 테스트를 진행할 수 있다. Mock객체로 만들고 싶은 객체에 @Mock 어노테이션을 달기만 하면 되는데 이때 만들어진 Mock 객체는 Null이기 때문에 그렇게 하지 않기 위해서 @ExtendWith(MockitoExtension.class)를 추가한다. @ExtendWith(MockitoExtension.class) class MockWedulTest { @..

web/Junit 2019.12.23

Spring BootJunit5 테스트 (백기선님 인프런 강의)

Junit 5 테스트 Junit4를 잘 알고 있던건 아니지만 새로 입사한 회사에서 Junit5를 사용하여 테스트 코드를 짜기때문에 더 잘 알고 싶어 공부하게 되었다. 그 중 백기선님의 Junit5 테스트 코드 관련 인강을 인프런에서 듣게 되었다. 내용이 너무 좋았고 그동안 몰랐고 정리가 되지 않았던 부분을 많이 알게 되었다. 이를 아주 간략하게만 정리해봤다. 가격이 그리 비싸지 않기 때문에 한번쯤은 꼭 보는걸 추천한다. https://www.inflearn.com/course/the-java-application-test/# 소개 Junit5는 Junit3, 4에서 사용하던 Junit Platform 구현체 Vintage대신 Jupiter를 사용해서 TestEngine Api를 사용하는 test 프레임워..

web/Junit 2019.12.23

Junit 정리 - DAO 테스트 하기

앞에서 진행했던 컨트롤러, 서비스뿐만 아니라 직접 데이터베이스에 접근하여 쿼리를 사용하는 DAO 클래스도 Junit 단위 테스트를 진행할 수 있다. 앞에 설명했던 부분들과 마찬가지로 bean 생성을 해야하는데 DAO의 경우에는 dataSource와 sqlSession, mybatis, transaction등 설정해야 하는 부분들이 많다. 이번에는 xml이 아닌 java configuration으로 설정했을 때는 어떻게 설정을 진행해야 하는지 살펴보자. 설정 우선 테스트를 진행하려는 클래스를 bean으로 생성하여야 한다. DAO 클래스의 경우 sqlSession이 빈으로 생성되어 있어야 생성할 수 있으므로 @DependOn 어노테이션을 사용하여 의존성을 설정해 준다. 123456789101112131415..

web/Junit 2018.05.27

Junit 정리 - 서비스 테스트 하기

전장에서 컨트롤러 테스트 방법을 공부하였다. 이번에는 서비스를 가지고 테스트 하는 방법을 설명한다. Assert 시리즈로 검증하기 - Assert 시리즈를 활용하면 해당 메소드의 결과값이 true인지 검증 뿐만 아니라 null 인지 등도 테스트를 진행할 수 있다. Assert로 설정한 대로 동작하지 않으면 테스트 도중 실패로 끝나기 때문에, 잘못된 결과 값이 나온다는 것을 확인하고 코드를 수정할 수 있다. Assert 관련 메서드 종류는 다음과 같다. Assert 메서드 종류설명assertArrayEquals(a, b)배열 a와 b가 일치함을 확인한다.assertEquals(a, b)객체 a와 b가 일치함을 확인한다. (객체에 정의되어 있는 equals를 통해 비교한다.)assertSame(a, b)객체..

web/Junit 2018.05.27

Junit 정리 - MockMvc를 이용한 컨트롤러 테스트

입사 후 개발을 한지 벌써 3년 차가 되었다. 개발을 처음 접할 때는 어떻게 구현해야 할지 어떻게 만들어야 하는지에 대한 관심이 더 컸다. 하지만 요새는 개발 후 어떻게 테스트를 진행하여 먼저 버그를 예방(?)할 수 있는지 고민하기 시작했다. 성격이 덜렁거리거나 대충 하는 스타일은 아니었는데, 요즘 열정이 많이 식어서 그런지 단순한 부분에서 버그를 유발하는 것 같아서 TDD를 통해 고쳐보려고 Junit을 공부하기로 했다. 스프링의 각 영역인 Controller. Service, Dao에 대한 테스트를 총 3장에 걸쳐서 설명하겠다. 그리고 Mockito에 대한 설명을 추가로 진행하겠다. 0. 공통 우선 스프링에서 단위테스트를 진행하기 위해서는 몇가지 라이브러리가 필요하다. 123456789101112131..

web/Junit 2018.05.27 (6)