From 761850816cf5269c9a1b558e0d7659cd63f7ea72 Mon Sep 17 00:00:00 2001
From: Sam Brannen <104798+sbrannen@users.noreply.github.com>
Date: Thu, 24 Oct 2024 12:04:30 +0200
Subject: [PATCH] =?UTF-8?q?Verify=20@=E2=81=A0MockitoBean=20can=20be=20use?=
=?UTF-8?q?d=20with=20JUnit=204=20and=20SpringMethodRule?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
See gh-33742
---
...dRuleWithRepeatJUnit4IntegrationTests.java | 76 +++++++++++++++++++
src/checkstyle/checkstyle-suppressions.xml | 4 +-
2 files changed, 78 insertions(+), 2 deletions(-)
create mode 100644 spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
diff --git a/spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java b/spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
new file mode 100644
index 000000000000..a58e75041748
--- /dev/null
+++ b/spring-test/src/test/java/org/springframework/test/context/bean/override/mockito/integration/MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests.java
@@ -0,0 +1,76 @@
+/*
+ * Copyright 2002-2024 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.integration;
+
+import org.junit.AfterClass;
+import org.junit.BeforeClass;
+import org.junit.Rule;
+import org.junit.Test;
+
+import org.springframework.test.annotation.Repeat;
+import org.springframework.test.context.bean.override.mockito.MockitoBean;
+import org.springframework.test.context.junit4.rules.SpringMethodRule;
+
+import static org.assertj.core.api.Assertions.assertThat;
+import static org.mockito.BDDMockito.when;
+
+/**
+ * Tests for {@link MockitoBean @MockitoBean}, {@link SpringMethodRule}, and
+ * {@link Repeat @Repeat} with JUnit 4.
+ *
+ * @author Andy Wilkinson
+ * @author Sam Brannen
+ * @see gh-27693
+ */
+public class MockitoBeanAndSpringMethodRuleWithRepeatJUnit4IntegrationTests {
+
+ private static int invocations;
+
+ @Rule
+ public final SpringMethodRule springMethodRule = new SpringMethodRule();
+
+ @MockitoBean
+ Service service;
+
+ @BeforeClass
+ public static void beforeClass() {
+ invocations = 0;
+ }
+
+ @Test
+ @Repeat(2)
+ public void repeatedTest() {
+ assertThat(service.greeting()).as("mock should have been reset").isNull();
+
+ when(service.greeting()).thenReturn("test");
+ assertThat(service.greeting()).isEqualTo("test");
+
+ invocations++;
+ }
+
+ @AfterClass
+ public static void afterClass() {
+ assertThat(invocations).isEqualTo(2);
+ }
+
+
+ interface Service {
+
+ String greeting();
+ }
+
+}
diff --git a/src/checkstyle/checkstyle-suppressions.xml b/src/checkstyle/checkstyle-suppressions.xml
index a1211b973672..53a89a58672b 100644
--- a/src/checkstyle/checkstyle-suppressions.xml
+++ b/src/checkstyle/checkstyle-suppressions.xml
@@ -109,8 +109,8 @@
-
-
+
+