package kr.debop4j.core.reflect; import com.carrotsearch.junitbenchmarks.BenchmarkOptions; import kr.debop4j.core.AbstractTest; import lombok.extern.slf4j.Slf4j; import org.junit.Assert; import org.junit.Test; /** * DynamicAccessor Test * * @author 배성혁 ( sunghyouk.bae@gmail.com ) * @since 13. 1. 21. */ @Slf4j public class DynamicAccessorTest extends AbstractTest { @lombok.Getter @lombok.Setter static class User { private String email; private Double age; public User() {} public void includeAge(int delta) { age += delta; } } @BenchmarkOptions(benchmarkRounds = 100, warmupRounds = 1) @Test public void dynamicInstancing() { DynamicAccessor<User> userAccessor = DynamicAccessorFactory.create(User.class); Assert.assertNotNull(userAccessor); Object user = userAccessor.newInstance(); userAccessor.setProperty(user, "email", "sunghyouk.bae@gmail.com"); userAccessor.setProperty(user, "age", 110.0); Assert.assertEquals("sunghyouk.bae@gmail.com", userAccessor.getProperty(user, "email")); Assert.assertEquals(110.0, userAccessor.getProperty(user, "age")); } }