fixture-monkey icon indicating copy to clipboard operation
fixture-monkey copied to clipboard

BeanArbitraryIntrospector 사용 시 NPE 발생

Open psw0946 opened this issue 10 months ago • 0 comments

Describe the bug

BeanArbitraryIntrospector 사용 시 기본 생성자와 Setter 가 있어야 하는 걸로 알고 있습니다. 기본 생성자가 없는 경우 경고 로그를 잘 띄워주지만, Setter 가 없는 경우에는 NPE 에러가 발생하며 테스트가 실패하여 제보드립니다. 기본 생성자가 없는 경우와 마찬가지로 안내 문구가 나와야할 것 같아서요.

Your environment

  • version of Fixture Monkey: 1.1.12
  • version of Java: JDK 21

Steps to reproduce

public class Test {
  private int x;
}

@Test
void test() {
	TestObj obj = fixtureMonkey.giveMeOne(TestObj.class);
}

Expected behaviour

  • No Error
  • Warn log for no setter

Actual behaviour

Cannot invoke "java.beans.PropertyDescriptor.getWriteMethod()" because "propertyDescriptor" is null
java.lang.NullPointerException: Cannot invoke "java.beans.PropertyDescriptor.getWriteMethod()" because "propertyDescriptor" is null
	at com.navercorp.fixturemonkey.api.introspector.BeanArbitraryIntrospector.lambda$null$1(BeanArbitraryIntrospector.java:110)
	at java.base/java.util.HashMap.forEach(HashMap.java:1429)
	at com.navercorp.fixturemonkey.api.introspector.BeanArbitraryIntrospector.lambda$combine$2(BeanArbitraryIntrospector.java:104)
	at com.navercorp.fixturemonkey.api.arbitrary.ObjectCombinableArbitrary.combined(ObjectCombinableArbitrary.java:54)
	at com.navercorp.fixturemonkey.api.arbitrary.CombinableArbitraryDelegator.combined(CombinableArbitraryDelegator.java:34)
	at com.navercorp.fixturemonkey.api.arbitrary.NullInjectCombinableArbitrary.combined(NullInjectCombinableArbitrary.java:46)
	at com.navercorp.fixturemonkey.api.arbitrary.TraceableCombinableArbitrary.combined(TraceableCombinableArbitrary.java:42)
	at com.navercorp.fixturemonkey.api.arbitrary.FilteredCombinableArbitrary.combined(FilteredCombinableArbitrary.java:73)
	at com.navercorp.fixturemonkey.resolver.ResolvedCombinableArbitrary.combined(ResolvedCombinableArbitrary.java:77)
	at com.navercorp.fixturemonkey.builder.DefaultArbitraryBuilder.sample(DefaultArbitraryBuilder.java:502)
	at com.navercorp.fixturemonkey.FixtureMonkey.lambda$giveMe$3(FixtureMonkey.java:167)
	at java.base/java.util.stream.StreamSpliterators$InfiniteSupplyingSpliterator$OfRef.tryAdvance(StreamSpliterators.java:1367)
...

psw0946 avatar Jun 20 '25 13:06 psw0946