Closed kjh5833 closed 1 year ago
@kjh5833 님 안녕하세요.
create
를 통해 생성한 Fixture Monkey 인스턴스는 기본 BeanArbitraryIntrospector
를 사용해 객체를 생성합니다.
BeanArbitraryIntrospector
에서는 빈 생성자
와 setter
를 사용해 객체를 만들고 있습니다.
setter
를 찾을 때 JavaBeans 스펙을 기준으로 조회하고 있습니다. 따라서 isGlobal
인 필드는 setter의 이름이 setIsGlobal
이여야 하고, mHeader
는 setmHeader
이여야 합니다. 참조1 참조2
기본적인 롬복 설정에서는 isGlobal
의 setter를 setGlobal
, mHeader
의 setter를 setMHeader
로 생성합니다. 이런 이유로, 현재 setter를 못찾아서 NPE가 나고 있습니다.
해결방안은 두 가지가 있을 것 같습니다.
다른 ArbitraryIntrospector
를 사용한다. 지금 보여주신 객체의 예만 봤을 때는 FieldReflectionArbitraryIntrospector
가 적합해보입니다.
다음과 같이 설정하시면 ArbitraryIntrospector
를 변경할 수 있습니다.
FixtureMonkey.builder()
.objectIntrospector(FieldReflectionArbitraryIntrospector.INSTANCE)
.build();
ArbitraryIntrospector
에 대한 설명과 종류는 문서를 참조해주세요.
롬복 설정을 추가한다.
lombok.accessors.javaBeansSpecCapitalization=true
를 추가한다.isGlobal
필드에 @Accessors(fluent=true)
를 사용한다.필드의 이름을 JavaBeans에 맞게 변경한다.
시도해보시고, 문제가 있으면 다시 질문 주세요. 감사합니다~~
@seongahjo 님 안녕하세요! 원인 및 여러 해결방안까지 정확한 답변 감사드립니다~! 첫번째 방안으로 해결하였습니다! 감사합니다!
Describe the bug
안녕하세요! 라이브러리 잘 사용하고 있습니다. 테스트 작성 중 특정 필드(
mHeader
,isGlobal
)를 가진 class 들에서 NPE 가 발생하고, 정상동작 하지 않아 이슈를 올리게 되었습니다. 이유 및 회피 방안이 있는지 궁금합니다.--
We have a little problem. NPE occurs in a class with a specific field(
mHeader
,isGlobal
). I wonder if there is a reason or a way to avoid this.Your environment
Steps to reproduce
Expected behaviour
Test PASS
Actual behaviour
NPE occurred