SPRING
(Junit4)Assert Class
incodingone
2024. 7. 8. 16:13
2. Junit4 Assert Class
아래의 문서를 참고하여 작성하였다.저번에 포스팅 했던 java의 assert는 예약어였는데 Junit의 Assert는 클래스 였다.
org.junit.Assert 경로의 public 클래스이며 Object클래스를 상속받는다.
처음부터 거의 모든 설명이 한줄로 나오는데
테스트를 작성할때 유용하고, 실패할때만 기록되며 직접 사용할수 있지만, 정적 가져오기로 참조하면 더 좋다.
다음으로 생성자 설명이 나온다
protected Assert() | 정적 전용 클래스이기 때문에 생성자를 보호해라
우선 생성자의 접근 제어자가 protected 라서
같은 패키지의 상속받은 클래스에서만 접근이 가능하다 -> 외부에서 직접적으로 호출이 불가능하다 -> 인스턴스화 하지 마라
정도로 이해해볼수 있을것 같다. 인스턴스화 하지 말라는 이유가 메서드에서 나오는데 모든 메서드가 static으로 작성된걸 확인할수 있다. 따라서 클래스만 명시하고 바로 메서드를 사용 가능하다.
import org.junit.Assert;
public class AssertTest(){
@Test
public void testEquals(){
Assert.assertEquals();
}
}
그리고 정적 가져오기로 참조하면 더 좋다는 말은 아래 코드 처럼 import를 static으로 하고 클래스 이름을 생략하는 것이다.
import static org.junit.Assert.*;
//하위 전체를 임포트 하기 싫으면 명시해줘야한다.
// 예 : import static org.junit.Assert.assertEquals;
public class AssertTest(){
@Test
public void testEquals(){
assertEquals();
}
}
이렇게 했을때의 장점은 가독성 향상인것 같다. 지금은 단순히 한개짜리 테스트이지만 테스트 코드가 쌓이다 보면 식별하기 어려울수 있고, 테스트 코드는 가능한 간결하게 작성하는것이 내가 보기에도 편리했다.
단순히 코드의 가독성 뿐만 아니라 멤버를 정확하게 임포트 해주면 import static org.junit.Assert.asserEquals
이 한줄만 보고도 바로 알수 있을것 같다.
주의점도 있는데 충돌이 있을수 있다. 다른 클래스나 패키지에 동명의 멤버가 있을 경우 어떤것을 임포트 해야할지 몰라 충돌이 생길수 있는데 충돌을 회피하는 방법을 알고 사용하는것이 좋을것 같다.