diff --git a/spring-test/src/test/java/org/springframework/test/util/AopTestUtilsTests.java b/spring-test/src/test/java/org/springframework/test/util/AopTestUtilsTests.java index 8bebd7abc88..d328fc0f21b 100644 --- a/spring-test/src/test/java/org/springframework/test/util/AopTestUtilsTests.java +++ b/spring-test/src/test/java/org/springframework/test/util/AopTestUtilsTests.java @@ -1,5 +1,5 @@ /* - * Copyright 2002-2019 the original author or authors. + * Copyright 2002-2022 the original author or authors. * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. @@ -16,6 +16,7 @@ package org.springframework.test.util; +import org.junit.jupiter.api.Nested; import org.junit.jupiter.api.Test; import org.springframework.aop.framework.ProxyFactory; @@ -37,91 +38,98 @@ class AopTestUtilsTests { private final FooImpl foo = new FooImpl(); - @Test - void getTargetObjectForNull() { - assertThatIllegalArgumentException().isThrownBy(() -> - getTargetObject(null)); - } - - @Test - void getTargetObjectForNonProxiedObject() { - Foo target = getTargetObject(foo); - assertThat(target).isSameAs(foo); - } - - @Test - void getTargetObjectWrappedInSingleJdkDynamicProxy() { - Foo target = getTargetObject(jdkProxy(foo)); - assertThat(target).isSameAs(foo); - } - - @Test - void getTargetObjectWrappedInSingleCglibProxy() { - Foo target = getTargetObject(cglibProxy(foo)); - assertThat(target).isSameAs(foo); - } - - @Test - void getTargetObjectWrappedInDoubleJdkDynamicProxy() { - Foo target = getTargetObject(jdkProxy(jdkProxy(foo))); - assertThat(target).isNotSameAs(foo); - } - - @Test - void getTargetObjectWrappedInDoubleCglibProxy() { - Foo target = getTargetObject(cglibProxy(cglibProxy(foo))); - assertThat(target).isNotSameAs(foo); - } - - @Test - void getUltimateTargetObjectForNull() { - assertThatIllegalArgumentException().isThrownBy(() -> - getUltimateTargetObject(null)); - } - - @Test - void getUltimateTargetObjectForNonProxiedObject() { - Foo target = getUltimateTargetObject(foo); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInSingleJdkDynamicProxy() { - Foo target = getUltimateTargetObject(jdkProxy(foo)); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInSingleCglibProxy() { - Foo target = getUltimateTargetObject(cglibProxy(foo)); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInDoubleJdkDynamicProxy() { - Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(foo))); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInDoubleCglibProxy() { - Foo target = getUltimateTargetObject(cglibProxy(cglibProxy(foo))); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInCglibProxyWrappedInJdkDynamicProxy() { - Foo target = getUltimateTargetObject(jdkProxy(cglibProxy(foo))); - assertThat(target).isSameAs(foo); - } - - @Test - void getUltimateTargetObjectWrappedInCglibProxyWrappedInDoubleJdkDynamicProxy() { - Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(cglibProxy(foo)))); - assertThat(target).isSameAs(foo); - } - - private Foo jdkProxy(Foo foo) { + @Nested + class GetTargetObject { + + @Test + void getTargetObjectForNull() { + assertThatIllegalArgumentException().isThrownBy(() -> getTargetObject(null)); + } + + @Test + void getTargetObjectForNonProxiedObject() { + Foo target = getTargetObject(foo); + assertThat(target).isSameAs(foo); + } + + @Test + void getTargetObjectWrappedInSingleJdkDynamicProxy() { + Foo target = getTargetObject(jdkProxy(foo)); + assertThat(target).isSameAs(foo); + } + + @Test + void getTargetObjectWrappedInSingleCglibProxy() { + Foo target = getTargetObject(cglibProxy(foo)); + assertThat(target).isSameAs(foo); + } + + @Test + void getTargetObjectWrappedInDoubleJdkDynamicProxy() { + Foo target = getTargetObject(jdkProxy(jdkProxy(foo))); + assertThat(target).isNotSameAs(foo); + } + + @Test + void getTargetObjectWrappedInDoubleCglibProxy() { + Foo target = getTargetObject(cglibProxy(cglibProxy(foo))); + assertThat(target).isNotSameAs(foo); + } + } + + @Nested + class GetUltimateTargetObject { + + @Test + void getUltimateTargetObjectForNull() { + assertThatIllegalArgumentException().isThrownBy(() -> getUltimateTargetObject(null)); + } + + @Test + void getUltimateTargetObjectForNonProxiedObject() { + Foo target = getUltimateTargetObject(foo); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInSingleJdkDynamicProxy() { + Foo target = getUltimateTargetObject(jdkProxy(foo)); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInSingleCglibProxy() { + Foo target = getUltimateTargetObject(cglibProxy(foo)); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInDoubleJdkDynamicProxy() { + Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(foo))); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInDoubleCglibProxy() { + Foo target = getUltimateTargetObject(cglibProxy(cglibProxy(foo))); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInCglibProxyWrappedInJdkDynamicProxy() { + Foo target = getUltimateTargetObject(jdkProxy(cglibProxy(foo))); + assertThat(target).isSameAs(foo); + } + + @Test + void getUltimateTargetObjectWrappedInCglibProxyWrappedInDoubleJdkDynamicProxy() { + Foo target = getUltimateTargetObject(jdkProxy(jdkProxy(cglibProxy(foo)))); + assertThat(target).isSameAs(foo); + } + } + + + private static Foo jdkProxy(Foo foo) { ProxyFactory pf = new ProxyFactory(); pf.setTarget(foo); pf.addInterface(Foo.class); @@ -131,7 +139,7 @@ class AopTestUtilsTests { return proxy; } - private Foo cglibProxy(Foo foo) { + private static Foo cglibProxy(Foo foo) { ProxyFactory pf = new ProxyFactory(); pf.setTarget(foo); pf.setProxyTargetClass(true);