[개발일지] 230526 정적 멤버 클래스를 이용해 불필요한 중복을 제거하자

오늘 새로 배운 내용

테스트 코드에서 반복해서 생성되는 객체는 정적 멤버 클래스를 이용해서 중복을 줄이자.

 

테스트 코드에서 각각의 독립적인 테스트 케이스마다 객체 검증을 위해 반복적으로 객체를 생성해야 할 일이 있을 것이다. 

 

예를 들어 아래와 같이 Post라는 객체를 검증하기 위해서는 각각의 테스트 케이스마다 post를 생성해줘야 한다.

 

@Test
void test1() {
    Post post = new Post(...);
    
    ...
}
    
@Test
void test2() {
    Post post = new Post(..);
    
    ...
}

 

테스트 케이스가 많아질 수록 Post 객체를 생성하는 작업은 귀찮고 코드도 중복되는 문제가 발생한다.

 

이런 문제를 해결하기 위해서 중첩 클래스의 한 종류인 정적 멤버 클래스를 이용할 수 있다.

 

중첩 클래스

중첩 클래스란 다른 클래스 안에 정의된 클래스를 의미한다. 

 

예시 코드

public class PostTest { // 바깥 클래스
    public class NestedClass { // 중첩 클래스
        ...
    }
}

 

중첩 클래스는 자신을 감싸고 있는 클래스 안에서만 사용되어야 한다는 주의점이 있다.

 

정적 멤버  클래스

중첩 클래스의 종류에는 정적 멤버 클래스가 존재하는데 정적 멤버 클래스는 class안에 static으로 선언된 class를 의미한다.

 

예시 코드

public class PostTest {
   private static class TEST_POST { // 정적 멤버 클래스
        private static final Post ONE = new Post(...);
    }
}

 

정적 멤버 클래스는 바깥 클래스의 private 멤버에도 접근할 수 있다는 특징이 있다.

 

정적 멤버 클래스에서 테스트 케이스마다 생성되는 Post 객체를 생성해서 각 테스트 케이스에서 사용하여 객체를 딱 한 번만 생성하고 코드의 중복을 줄일 수 있다.

 

쓸데없는 코드 중복 죄악에서 벗어나자

 

https://www.asiatoday.co.kr/view.php?key=20160121001130469