JUnitSoftAssertions 라이브러리
TDD 에 대한 강의를 들었을 때, 테스트 코드를 검증 시 한 메서드에 한 가지의 검증을 해야한다는 규칙이 존재하였습니다.
한가지의 규칙만 존재해야하는 이유는, 만약 한 테스트 메서드 내에 3가지의 검증이 존재한다면 첫 번째의 검증이 실패한 경우 두번째와 세번째 테스트에 대해서 검증을 진행할 수 없기 때문입니다.
만약 간단한 프로젝트나 테스트를 구성하고 있는 경우에는 크게 문제가 되지 않을 수 있지만, 테스트 코드의 양이 방대하다면 이러한 문제는 크게 야기될 수 있습니다. 그렇기 떄문에 이러한 검증 문제로 인하여 한 테스트 메서드 내에는 하나의 검증만 진행해야 한다는 규칙이 존재합니다.
하지만, 같은 테스트 코드이지만 검증해야되는 부분만 다르기 때문에 중복된 테스트 로직을 작성해야하는 것도 가독성 측면에서 문제가 될 수 있습니다.
이러한 문제를 해결하기 위해 추가하는 것이 SoftAssertions 라이브러리입니다.
SoftAssertions 는 assertAll() 이라는 메서드를 내장하고 있습니다.
다음과 같이 테스트코드의 검증에 대한 로직을 작성하고 마지막에 assertAll() 메서드만 선언해주면 테스트코드 내에 작성된 모든 검증을 진행합니다.
하지만, 이런 assertAll() 도 2가지 이상의 검증을 하는 테스트코드 내에 매번 작성해야된다는 문제가 발생합니다.
이러한 문제를 해결한 것이 JunitSoftAssertion 입니다.
위처럼 JunitSoftAssertion 을 특정 클래스에 선언한 후 테스트해야할 테스트 클래스에 상속 시켜주면 간단하게 사용할 수 있습니다.
이러한 JunitSoftAssertion 을 사용함으로써 여러가지 검증이 존재하는 경우 동시 검증을 진행할 수 있으며, 중복되는 코드를 제거함으로써 가독성을 증가시킬 수 있게됩니다.
'TEST CODE' 카테고리의 다른 글
[Junit] Spring boot 에서 @ControllerAdvice 를 테스트하는 방법 (0) | 2020.01.02 |
---|---|
[JUnit]같은 타입인 여러개의 Mock 객체를 @InjectMock 으로 주입 시 파라미터를 제대로 인식하지 못하는 문제 해결 (0) | 2019.12.16 |
[JUnit] Test code 작성시 DI(Dependencies Inject) 를 적용하는 방법 (0) | 2019.11.27 |
[Junit] Test Code 와 TDD (0) | 2019.08.17 |