Browse Source
Prior to this commit, @MockitoBean could only be declared on fields within test classes, which prevented developers from being able to easily reuse mock configuration across a test suite. With this commit, @MockitoBean is now supported at the type level on test classes, their superclasses, and interfaces implemented by those classes. @MockitoBean is also supported on enclosing classes for @Nested test classes, their superclasses, and interfaces implemented by those classes, while honoring @NestedTestConfiguration semantics. In addition, @MockitoBean: - has a new `types` attribute that can be used to declare the type or types to mock when @MockitoBean is declared at the type level - can be declared as a repeatable annotation at the type level - can be declared as a meta-annotation on a custom composed annotation which can be reused across a test suite (see the @SharedMocks example in the reference manual) To support these new features, this commit also includes the following changes. - The `field` property in BeanOverrideHandler is now @Nullable. - BeanOverrideProcessor has a new `default` createHandlers() method which is invoked when a @BeanOverride annotation is found at the type level. - MockitoBeanOverrideProcessor implements the new createHandlers() method. - The internal findHandlers() method in BeanOverrideHandler has been completely overhauled. - The @MockitoBean and @MockitoSpyBean section of the reference manual has been completely overhauled. Closes gh-33925pull/34398/head
36 changed files with 1379 additions and 144 deletions
@ -0,0 +1,41 @@
@@ -0,0 +1,41 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito; |
||||
|
||||
import java.lang.annotation.Documented; |
||||
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
||||
|
||||
/** |
||||
* Container for {@link MockitoBean @MockitoBean} annotations which allows |
||||
* {@code @MockitoBean} to be used as a {@linkplain java.lang.annotation.Repeatable |
||||
* repeatable annotation} at the type level — for example, on test classes |
||||
* or interfaces implemented by test classes. |
||||
* |
||||
* @author Sam Brannen |
||||
* @since 6.2.2 |
||||
*/ |
||||
@Target(ElementType.TYPE) |
||||
@Retention(RetentionPolicy.RUNTIME) |
||||
@Documented |
||||
public @interface MockitoBeans { |
||||
|
||||
MockitoBean[] value(); |
||||
|
||||
} |
||||
@ -0,0 +1,102 @@
@@ -0,0 +1,102 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.beans.factory.annotation.Qualifier; |
||||
import org.springframework.context.annotation.Bean; |
||||
import org.springframework.context.annotation.Configuration; |
||||
import org.springframework.test.context.bean.override.example.ExampleService; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBeans; |
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
import static org.mockito.BDDMockito.given; |
||||
|
||||
/** |
||||
* Integration tests for {@link MockitoBeans @MockitoBeans} and |
||||
* {@link MockitoBean @MockitoBean} declared "by name" at the class level as a |
||||
* repeatable annotation. |
||||
* |
||||
* @author Sam Brannen |
||||
* @since 6.2.2 |
||||
* @see <a href="https://github.com/spring-projects/spring-framework/issues/33925">gh-33925</a> |
||||
* @see MockitoBeansByTypeIntegrationTests |
||||
*/ |
||||
@SpringJUnitConfig |
||||
@MockitoBean(name = "s1", types = ExampleService.class) |
||||
@MockitoBean(name = "s2", types = ExampleService.class) |
||||
class MockitoBeansByNameIntegrationTests { |
||||
|
||||
@Autowired |
||||
ExampleService s1; |
||||
|
||||
@Autowired |
||||
ExampleService s2; |
||||
|
||||
@MockitoBean(name = "s3") |
||||
ExampleService service3; |
||||
|
||||
@Autowired |
||||
@Qualifier("s4") |
||||
ExampleService service4; |
||||
|
||||
|
||||
@BeforeEach |
||||
void configureMocks() { |
||||
given(s1.greeting()).willReturn("mock 1"); |
||||
given(s2.greeting()).willReturn("mock 2"); |
||||
given(service3.greeting()).willReturn("mock 3"); |
||||
} |
||||
|
||||
@Test |
||||
void checkMocksAndStandardBean() { |
||||
assertThat(s1.greeting()).isEqualTo("mock 1"); |
||||
assertThat(s2.greeting()).isEqualTo("mock 2"); |
||||
assertThat(service3.greeting()).isEqualTo("mock 3"); |
||||
assertThat(service4.greeting()).isEqualTo("prod 4"); |
||||
} |
||||
|
||||
@Configuration |
||||
static class Config { |
||||
|
||||
@Bean |
||||
ExampleService s1() { |
||||
return () -> "prod 1"; |
||||
} |
||||
|
||||
@Bean |
||||
ExampleService s2() { |
||||
return () -> "prod 2"; |
||||
} |
||||
|
||||
@Bean |
||||
ExampleService s3() { |
||||
return () -> "prod 3"; |
||||
} |
||||
|
||||
@Bean |
||||
ExampleService s4() { |
||||
return () -> "prod 4"; |
||||
} |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,147 @@
@@ -0,0 +1,147 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import org.junit.jupiter.api.BeforeEach; |
||||
import org.junit.jupiter.api.Nested; |
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.beans.factory.annotation.Autowired; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBeans; |
||||
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
import static org.mockito.BDDMockito.given; |
||||
|
||||
/** |
||||
* Integration tests for {@link MockitoBeans @MockitoBeans} and |
||||
* {@link MockitoBean @MockitoBean} declared "by type" at the class level, as a |
||||
* repeatable annotation, and via a custom composed annotation. |
||||
* |
||||
* @author Sam Brannen |
||||
* @since 6.2.2 |
||||
* @see <a href="https://github.com/spring-projects/spring-framework/issues/33925">gh-33925</a> |
||||
* @see MockitoBeansByNameIntegrationTests |
||||
*/ |
||||
@SpringJUnitConfig |
||||
@MockitoBean(types = {Service04.class, Service05.class}) |
||||
@SharedMocks // Intentionally declared between local @MockitoBean declarations
|
||||
@MockitoBean(types = Service06.class) |
||||
class MockitoBeansByTypeIntegrationTests implements TestInterface01 { |
||||
|
||||
@Autowired |
||||
Service01 service01; |
||||
|
||||
@Autowired |
||||
Service02 service02; |
||||
|
||||
@Autowired |
||||
Service03 service03; |
||||
|
||||
@Autowired |
||||
Service04 service04; |
||||
|
||||
@Autowired |
||||
Service05 service05; |
||||
|
||||
@Autowired |
||||
Service06 service06; |
||||
|
||||
@MockitoBean |
||||
Service07 service07; |
||||
|
||||
|
||||
@BeforeEach |
||||
void configureMocks() { |
||||
given(service01.greeting()).willReturn("mock 01"); |
||||
given(service02.greeting()).willReturn("mock 02"); |
||||
given(service03.greeting()).willReturn("mock 03"); |
||||
given(service04.greeting()).willReturn("mock 04"); |
||||
given(service05.greeting()).willReturn("mock 05"); |
||||
given(service06.greeting()).willReturn("mock 06"); |
||||
given(service07.greeting()).willReturn("mock 07"); |
||||
} |
||||
|
||||
@Test |
||||
void checkMocks() { |
||||
assertThat(service01.greeting()).isEqualTo("mock 01"); |
||||
assertThat(service02.greeting()).isEqualTo("mock 02"); |
||||
assertThat(service03.greeting()).isEqualTo("mock 03"); |
||||
assertThat(service04.greeting()).isEqualTo("mock 04"); |
||||
assertThat(service05.greeting()).isEqualTo("mock 05"); |
||||
assertThat(service06.greeting()).isEqualTo("mock 06"); |
||||
assertThat(service07.greeting()).isEqualTo("mock 07"); |
||||
} |
||||
|
||||
|
||||
@MockitoBean(types = Service09.class) |
||||
static class BaseTestCase implements TestInterface08 { |
||||
|
||||
@Autowired |
||||
Service08 service08; |
||||
|
||||
@Autowired |
||||
Service09 service09; |
||||
|
||||
@MockitoBean |
||||
Service10 service10; |
||||
} |
||||
|
||||
@Nested |
||||
@MockitoBean(types = Service12.class) |
||||
class NestedTests extends BaseTestCase implements TestInterface11 { |
||||
|
||||
@Autowired |
||||
Service11 service11; |
||||
|
||||
@Autowired |
||||
Service12 service12; |
||||
|
||||
@MockitoBean |
||||
Service13 service13; |
||||
|
||||
|
||||
@BeforeEach |
||||
void configureMocks() { |
||||
given(service08.greeting()).willReturn("mock 08"); |
||||
given(service09.greeting()).willReturn("mock 09"); |
||||
given(service10.greeting()).willReturn("mock 10"); |
||||
given(service11.greeting()).willReturn("mock 11"); |
||||
given(service12.greeting()).willReturn("mock 12"); |
||||
given(service13.greeting()).willReturn("mock 13"); |
||||
} |
||||
|
||||
@Test |
||||
void checkMocks() { |
||||
assertThat(service01.greeting()).isEqualTo("mock 01"); |
||||
assertThat(service02.greeting()).isEqualTo("mock 02"); |
||||
assertThat(service03.greeting()).isEqualTo("mock 03"); |
||||
assertThat(service04.greeting()).isEqualTo("mock 04"); |
||||
assertThat(service05.greeting()).isEqualTo("mock 05"); |
||||
assertThat(service06.greeting()).isEqualTo("mock 06"); |
||||
assertThat(service07.greeting()).isEqualTo("mock 07"); |
||||
assertThat(service08.greeting()).isEqualTo("mock 08"); |
||||
assertThat(service09.greeting()).isEqualTo("mock 09"); |
||||
assertThat(service10.greeting()).isEqualTo("mock 10"); |
||||
assertThat(service11.greeting()).isEqualTo("mock 11"); |
||||
assertThat(service12.greeting()).isEqualTo("mock 12"); |
||||
assertThat(service13.greeting()).isEqualTo("mock 13"); |
||||
} |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,68 @@
@@ -0,0 +1,68 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import java.util.stream.Stream; |
||||
|
||||
import org.junit.jupiter.api.Test; |
||||
|
||||
import org.springframework.core.ResolvableType; |
||||
import org.springframework.test.context.bean.override.BeanOverrideHandler; |
||||
import org.springframework.test.context.bean.override.BeanOverrideTestUtils; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
import org.springframework.test.context.bean.override.mockito.MockitoBeans; |
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat; |
||||
|
||||
/** |
||||
* Tests for {@link MockitoBeans @MockitoBeans}: {@link MockitoBean @MockitoBean} |
||||
* declared at the class level, as a repeatable annotation, and via a custom composed |
||||
* annotation. |
||||
* |
||||
* @author Sam Brannen |
||||
* @since 6.2.2 |
||||
* @see <a href="https://github.com/spring-projects/spring-framework/issues/33925">gh-33925</a> |
||||
*/ |
||||
class MockitoBeansTests { |
||||
|
||||
@Test |
||||
void registrationOrderForTopLevelClass() { |
||||
Stream<Class<?>> mockedServices = getRegisteredMockTypes(MockitoBeansByTypeIntegrationTests.class); |
||||
assertThat(mockedServices).containsExactly( |
||||
Service01.class, Service02.class, Service03.class, Service04.class, |
||||
Service05.class, Service06.class, Service07.class); |
||||
} |
||||
|
||||
@Test |
||||
void registrationOrderForNestedClass() { |
||||
Stream<Class<?>> mockedServices = getRegisteredMockTypes(MockitoBeansByTypeIntegrationTests.NestedTests.class); |
||||
assertThat(mockedServices).containsExactly( |
||||
Service01.class, Service02.class, Service03.class, Service04.class, |
||||
Service05.class, Service06.class, Service07.class, Service08.class, |
||||
Service09.class, Service10.class, Service11.class, Service12.class, |
||||
Service13.class); |
||||
} |
||||
|
||||
|
||||
private static Stream<Class<?>> getRegisteredMockTypes(Class<?> testClass) { |
||||
return BeanOverrideTestUtils.findAllHandlers(testClass) |
||||
.stream() |
||||
.map(BeanOverrideHandler::getBeanType) |
||||
.map(ResolvableType::getRawClass); |
||||
} |
||||
|
||||
} |
||||
@ -0,0 +1,21 @@
@@ -0,0 +1,21 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service { |
||||
String greeting(); |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service01 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service02 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service03 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service04 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service05 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service06 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service07 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service08 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service09 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service10 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service11 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service12 extends Service { |
||||
} |
||||
@ -0,0 +1,20 @@
@@ -0,0 +1,20 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
interface Service13 extends Service { |
||||
} |
||||
@ -0,0 +1,31 @@
@@ -0,0 +1,31 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import java.lang.annotation.ElementType; |
||||
import java.lang.annotation.Retention; |
||||
import java.lang.annotation.RetentionPolicy; |
||||
import java.lang.annotation.Target; |
||||
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
|
||||
@Target(ElementType.TYPE) |
||||
@Retention(RetentionPolicy.RUNTIME) |
||||
@MockitoBean(types = Service02.class) |
||||
@MockitoBean(types = Service03.class) |
||||
@interface SharedMocks { |
||||
} |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
|
||||
@MockitoBean(types = Service01.class) |
||||
interface TestInterface01 { |
||||
} |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
|
||||
@MockitoBean(types = Service08.class) |
||||
interface TestInterface08 { |
||||
} |
||||
@ -0,0 +1,23 @@
@@ -0,0 +1,23 @@
|
||||
/* |
||||
* Copyright 2002-2025 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. |
||||
* You may obtain a copy of the License at |
||||
* |
||||
* https://www.apache.org/licenses/LICENSE-2.0
|
||||
* |
||||
* Unless required by applicable law or agreed to in writing, software |
||||
* distributed under the License is distributed on an "AS IS" BASIS, |
||||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |
||||
* See the License for the specific language governing permissions and |
||||
* limitations under the License. |
||||
*/ |
||||
|
||||
package org.springframework.test.context.bean.override.mockito.mockbeans; |
||||
|
||||
import org.springframework.test.context.bean.override.mockito.MockitoBean; |
||||
|
||||
@MockitoBean(types = Service11.class) |
||||
interface TestInterface11 { |
||||
} |
||||
Loading…
Reference in new issue