본문 바로가기

TEST CODE

[Junit] JunitSoftAssertion 으로 중복 검증 문제 해결하기

JUnitSoftAssertions 라이브러리

 

TDD 에 대한 강의를 들었을 때, 테스트 코드를 검증 시 한 메서드에 한 가지의 검증을 해야한다는 규칙이 존재하였습니다.
한가지의 규칙만 존재해야하는 이유는, 만약 한 테스트 메서드 내에 3가지의 검증이 존재한다면 첫 번째의 검증이 실패한 경우 두번째와 세번째 테스트에 대해서 검증을 진행할 수 없기 때문입니다.


만약 간단한 프로젝트나 테스트를 구성하고 있는 경우에는 크게 문제가 되지 않을 수 있지만, 테스트 코드의 양이 방대하다면 이러한 문제는 크게 야기될 수 있습니다. 그렇기 떄문에 이러한 검증 문제로 인하여 한 테스트 메서드 내에는 하나의 검증만 진행해야 한다는 규칙이 존재합니다.


하지만, 같은 테스트 코드이지만 검증해야되는 부분만 다르기 때문에 중복된 테스트 로직을 작성해야하는 것도 가독성 측면에서 문제가 될 수 있습니다.
이러한 문제를 해결하기 위해 추가하는 것이 SoftAssertions 라이브러리입니다.

SoftAssertionsassertAll() 이라는 메서드를 내장하고 있습니다.

다음과 같이 테스트코드의 검증에 대한 로직을 작성하고 마지막에 assertAll() 메서드만 선언해주면 테스트코드 내에 작성된 모든 검증을 진행합니다.

하지만, 이런 assertAll() 도 2가지 이상의 검증을 하는 테스트코드 내에 매번 작성해야된다는 문제가 발생합니다.
이러한 문제를 해결한 것이 JunitSoftAssertion 입니다.

[JunitSoftAssertions 선언부]
[BasetTest 를 상속]
[Title 과 contents 를 assertAll() 을 사용하지 않고 동시에 검증]

 

위처럼 JunitSoftAssertion 을 특정 클래스에 선언한 후 테스트해야할 테스트 클래스에 상속 시켜주면 간단하게 사용할 수 있습니다.

이러한 JunitSoftAssertion 을 사용함으로써 여러가지 검증이 존재하는 경우 동시 검증을 진행할 수 있으며, 중복되는 코드를 제거함으로써 가독성을 증가시킬 수 있게됩니다.