테스트 할때 클래스 값주는 방법을 배워서 기록 남겨둠!!!

@Builder

스프링 부트에서 요놈은 참 편리.....어노테이션이 다~ 그렇긴 하다!

@Getter
@Setter
@Builder
@NoArgsConstructor      //JPA나 json parser 쓸때 꼭있어야하고
@AllArgsConstructor	//생성자를 직접 선언하고 모든 생성자에 @Builder 쓸거아님...넣어야함/안넘에러
public class 강원도 {

	private int 인구수;
	private int 가수수;
	private spring 시;
	private spring 동;
	private spring 길;
}

가정하자.......내고향 뽀록난다....다시짜기 귀찮으니 패스!

강원도 k = 강원도.builder()
        .인구수(400000)
        .가구수(400000)
        .시("많은시")
        .동("많은동")
        .길("여러길")
        .build();

이렇게 값을 줄 수 있다.

만약 리스트로 요청한다면.....

List<강원도> kList = List.of(강원도.builder()
                    .인구수(400000)
                    .가구수(400000)
                    .시("많은시")
                    .동("많은동")
                    .길("여러길")
                    .build());

근데 강원도class를 다른 클래스에서 합쳐서 사용한다면....

class 산<T> implement Serialzable {
    private spring 명산;
    private int 국립공원수;
    private List<T> 지역;
}
// 가정하에.....

산<강원도> mountain = 산.<강원도>builder()
                    .명산("설악산")
                    .국립공원수(10)
                    .지역(kList)
                    .build();

 

라고 하면 되었음.......나중에 잘 대입하기 위해서 쉽게쉽게 만들어 봤음......

여기서 참고로  Serialzable 은 이분의 글을 참조하면 될듯.....한번읽어서는 이해안됨...ㅋㅋ

/https://nesoy.github.io/articles/2018-04/Java-Serialize 

 

Java의 직렬화(Serialize)란?

 

nesoy.github.io

난 여기서 enum도 적용한 분의 클래스도 값을 줘야 했다...

 

public enum 소유자 implements GenericEnum<String> {

	COMPANY("C", "기업"),
	USER("M", "개인"),
	NON_MEMBER("N", "없음");

	private final String value;
	private final String description;

}

여기서 GenericEnum의 적용 원리는 이분걸 참조 하면 도움될 듯

https://vvshinevv.tistory.com/78

 

Enum과 Generic 함께 사용하기

개요 코드를 단순하게 만들면서 가독성을 높히기 위한 개발을 하다보면 Enum 타입을 사용하는 것은 흔하게 일어납니다. 또한 if / else 문 사용을 지양하는 방향으로 코드를 만들다 보면 Enum 클래스

vvshinevv.tistory.com

아까 적용한 산 클래스에 적용 해보자...뭐 내용상 안맞지만....나중에 다시 할수만 있으면 되니깐...

class 산<T> implement Serialzable {
    private spring 명산;
    private int 국립공원수;
    private 소유자 owner;
    private List<T> 지역;
    
}

산<강원도> mountain = 산.<강원도>builder()
                    .명산("설악산")
                    .국립공원수(10)
                    .owner(소유자.COMPANY)
                    .지역(kList)
                    .build();

이럴때 Builder 로 값을 줄때는 owner(소유자.COMPANY)...쉽지만....이걸 클래스 설정할 때 미리 계산되어야 한다는거....

쉽지 않는 길.....

참고로 같이 쓰였던 어노테이션들....

@Builder.Default  변수윗줄 기재하고 변수의 기본값을 넣어주면 builder로 값을 주지 않아도 초기값을 반환한다.

 

@SuperBuilder  @Builder처럼 어떤 객체의 필드값들을 편하게 지정하기 위해서 사용한다. 다만, super라는 말에서처럼 부모 객체를 상속받는 자식 객체를 만들 때, 부모 객체의 필드값도 지정할 수 있게 하기 위해서 사용한다

만드는 방법은 같은데 부모클래스의 변수값도 같이 적용된다는 것임

 

@NotNull(message = "장치 타입은 필수값입니다.")  말그래도 null거부!! builder를 할때 너무긴건 빼고 몇개만 추려서 생성했는데 NPE가 뜨길래 왠가 봤더니 저런게 있었다........값을 안주면 반환하지 않겠다는 클래스의 강한집착...!!줘야지 뭐 별수 있나...

 

 

junit도 하면서 공부하게 된다.^^

'junit TEST' 카테고리의 다른 글

junit private method ...and void  (0) 2023.02.22
Test 연습하기  (0) 2023.02.01
TEST 로 --일단은 환경설정과 싸움/..완성시키기  (0) 2022.11.16
JUNIT TEST 하기  (0) 2022.11.09

+ Recent posts