Skip to content

Commit ad458a6

Browse files
committed
Out of the box coverage jumps to 36.4% with spring-test
1 parent 7c9627c commit ad458a6

12 files changed

+33837
-323
lines changed

.diffblue/log/support-20250306T122753.log

Lines changed: 31456 additions & 0 deletions
Large diffs are not rendered by default.

.diffblue/log/user-20250306T122753.log

Lines changed: 1603 additions & 0 deletions
Large diffs are not rendered by default.

.diffblue/reports/diffblue-tests-jacoco-report.xml

Lines changed: 1 addition & 1 deletion
Large diffs are not rendered by default.

.diffblue/reports/report.json

Lines changed: 102 additions & 119 deletions
Large diffs are not rendered by default.

pom.xml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,12 @@
3737
<artifactId>mysql-connector-j</artifactId>
3838
<version>9.0.0</version>
3939
</dependency>
40+
<dependency>
41+
<groupId>org.springframework</groupId>
42+
<artifactId>spring-test</artifactId>
43+
<version>5.3.8</version>
44+
<scope>test</scope>
45+
</dependency>
4046
<dependency>
4147
<groupId>org.mockito</groupId>
4248
<artifactId>mockito-core</artifactId>
Lines changed: 97 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,21 @@
11
package controller;
22

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertNull;
5+
import static org.junit.Assert.assertTrue;
46
import com.diffblue.cover.annotations.MaintainedByDiffblue;
57
import com.diffblue.cover.annotations.MethodsUnderTest;
68
import java.io.IOException;
9+
import java.util.Collection;
10+
import java.util.Set;
711
import javax.servlet.ServletException;
812
import javax.servlet.http.HttpServletRequest;
9-
import javax.servlet.http.HttpServletRequestWrapper;
1013
import javax.servlet.http.HttpServletResponse;
11-
import javax.servlet.http.HttpServletResponseWrapper;
12-
import org.junit.Ignore;
1314
import org.junit.Test;
1415
import org.junit.experimental.categories.Category;
16+
import org.springframework.mock.web.MockHttpServletRequest;
17+
import org.springframework.mock.web.MockHttpServletResponse;
18+
import org.springframework.mock.web.MockHttpSession;
1519

1620
public class HomeServletDiffblueTest {
1721
/**
@@ -30,60 +34,124 @@ public void testNewHomeServlet() {
3034
/**
3135
* Test {@link HomeServlet#doGet(HttpServletRequest, HttpServletResponse)}.
3236
* <ul>
33-
* <li>When {@link HttpServletRequestWrapper#HttpServletRequestWrapper(HttpServletRequest)} with request is {@code null}.</li>
37+
* <li>Given {@link MockHttpSession#MockHttpSession()}.</li>
3438
* </ul>
3539
* <p>
3640
* Method under test: {@link HomeServlet#doGet(HttpServletRequest, HttpServletResponse)}
3741
*/
3842
@Test
39-
@Ignore("TODO: Complete this test")
4043
@Category(MaintainedByDiffblue.class)
4144
@MethodsUnderTest({"void HomeServlet.doGet(HttpServletRequest, HttpServletResponse)"})
42-
public void testDoGet_whenHttpServletRequestWrapperWithRequestIsNull() throws IOException, ServletException {
43-
// TODO: Diffblue Cover was only able to create a partial test for this method:
44-
// Reason: No inputs found that don't throw a trivial exception.
45-
// Diffblue Cover tried to run the arrange/act section, but the method under
46-
// test threw
47-
// java.lang.IllegalArgumentException: Request cannot be null
48-
// at javax.servlet.ServletRequestWrapper.<init>(ServletRequestWrapper.java:50)
49-
// at javax.servlet.http.HttpServletRequestWrapper.<init>(HttpServletRequestWrapper.java:47)
50-
// See https://diff.blue/R013 to resolve this issue.
45+
public void testDoGet_givenMockHttpSession() throws IOException, ServletException {
46+
// Arrange
47+
HomeServlet homeServlet = new HomeServlet();
48+
49+
MockHttpServletRequest request = new MockHttpServletRequest();
50+
request.setSession(new MockHttpSession());
51+
MockHttpServletResponse response = new MockHttpServletResponse();
52+
53+
// Act
54+
homeServlet.doGet(request, response);
5155

56+
// Assert
57+
Collection<String> headerNames = response.getHeaderNames();
58+
assertEquals(1, headerNames.size());
59+
assertTrue(headerNames instanceof Set);
60+
assertEquals("login", response.getRedirectedUrl());
61+
assertEquals(302, response.getStatus());
62+
assertTrue(headerNames.contains("Location"));
63+
assertTrue(response.isCommitted());
64+
}
65+
66+
/**
67+
* Test {@link HomeServlet#doGet(HttpServletRequest, HttpServletResponse)}.
68+
* <ul>
69+
* <li>Then {@link MockHttpServletResponse} (default constructor) HeaderNames size is one.</li>
70+
* </ul>
71+
* <p>
72+
* Method under test: {@link HomeServlet#doGet(HttpServletRequest, HttpServletResponse)}
73+
*/
74+
@Test
75+
@Category(MaintainedByDiffblue.class)
76+
@MethodsUnderTest({"void HomeServlet.doGet(HttpServletRequest, HttpServletResponse)"})
77+
public void testDoGet_thenMockHttpServletResponseHeaderNamesSizeIsOne() throws IOException, ServletException {
5278
// Arrange
5379
HomeServlet homeServlet = new HomeServlet();
54-
HttpServletRequestWrapper request = new HttpServletRequestWrapper(null);
80+
MockHttpServletRequest request = new MockHttpServletRequest();
81+
MockHttpServletResponse response = new MockHttpServletResponse();
5582

5683
// Act
57-
homeServlet.doGet(request, new HttpServletResponseWrapper(null));
84+
homeServlet.doGet(request, response);
85+
86+
// Assert
87+
Collection<String> headerNames = response.getHeaderNames();
88+
assertEquals(1, headerNames.size());
89+
assertTrue(headerNames instanceof Set);
90+
assertEquals("login", response.getRedirectedUrl());
91+
assertEquals(302, response.getStatus());
92+
assertTrue(headerNames.contains("Location"));
93+
assertTrue(response.isCommitted());
5894
}
5995

6096
/**
6197
* Test {@link HomeServlet#doPost(HttpServletRequest, HttpServletResponse)}.
6298
* <ul>
63-
* <li>When {@link HttpServletRequestWrapper#HttpServletRequestWrapper(HttpServletRequest)} with request is {@code null}.</li>
99+
* <li>Given {@link MockHttpSession#MockHttpSession()}.</li>
64100
* </ul>
65101
* <p>
66102
* Method under test: {@link HomeServlet#doPost(HttpServletRequest, HttpServletResponse)}
67103
*/
68104
@Test
69-
@Ignore("TODO: Complete this test")
70105
@Category(MaintainedByDiffblue.class)
71106
@MethodsUnderTest({"void HomeServlet.doPost(HttpServletRequest, HttpServletResponse)"})
72-
public void testDoPost_whenHttpServletRequestWrapperWithRequestIsNull() throws IOException, ServletException {
73-
// TODO: Diffblue Cover was only able to create a partial test for this method:
74-
// Reason: No inputs found that don't throw a trivial exception.
75-
// Diffblue Cover tried to run the arrange/act section, but the method under
76-
// test threw
77-
// java.lang.IllegalArgumentException: Request cannot be null
78-
// at javax.servlet.ServletRequestWrapper.<init>(ServletRequestWrapper.java:50)
79-
// at javax.servlet.http.HttpServletRequestWrapper.<init>(HttpServletRequestWrapper.java:47)
80-
// See https://diff.blue/R013 to resolve this issue.
107+
public void testDoPost_givenMockHttpSession() throws IOException, ServletException {
108+
// Arrange
109+
HomeServlet homeServlet = new HomeServlet();
110+
111+
MockHttpServletRequest request = new MockHttpServletRequest();
112+
request.setSession(new MockHttpSession());
113+
MockHttpServletResponse response = new MockHttpServletResponse();
114+
115+
// Act
116+
homeServlet.doPost(request, response);
81117

118+
// Assert
119+
Collection<String> headerNames = response.getHeaderNames();
120+
assertEquals(1, headerNames.size());
121+
assertTrue(headerNames instanceof Set);
122+
assertEquals("login", response.getRedirectedUrl());
123+
assertEquals(302, response.getStatus());
124+
assertTrue(headerNames.contains("Location"));
125+
assertTrue(response.isCommitted());
126+
}
127+
128+
/**
129+
* Test {@link HomeServlet#doPost(HttpServletRequest, HttpServletResponse)}.
130+
* <ul>
131+
* <li>Then {@link MockHttpServletResponse} (default constructor) HeaderNames size is one.</li>
132+
* </ul>
133+
* <p>
134+
* Method under test: {@link HomeServlet#doPost(HttpServletRequest, HttpServletResponse)}
135+
*/
136+
@Test
137+
@Category(MaintainedByDiffblue.class)
138+
@MethodsUnderTest({"void HomeServlet.doPost(HttpServletRequest, HttpServletResponse)"})
139+
public void testDoPost_thenMockHttpServletResponseHeaderNamesSizeIsOne() throws IOException, ServletException {
82140
// Arrange
83141
HomeServlet homeServlet = new HomeServlet();
84-
HttpServletRequestWrapper request = new HttpServletRequestWrapper(null);
142+
MockHttpServletRequest request = new MockHttpServletRequest();
143+
MockHttpServletResponse response = new MockHttpServletResponse();
85144

86145
// Act
87-
homeServlet.doPost(request, new HttpServletResponseWrapper(null));
146+
homeServlet.doPost(request, response);
147+
148+
// Assert
149+
Collection<String> headerNames = response.getHeaderNames();
150+
assertEquals(1, headerNames.size());
151+
assertTrue(headerNames instanceof Set);
152+
assertEquals("login", response.getRedirectedUrl());
153+
assertEquals(302, response.getStatus());
154+
assertTrue(headerNames.contains("Location"));
155+
assertTrue(response.isCommitted());
88156
}
89157
}
Lines changed: 92 additions & 29 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,26 @@
11
package controller;
22

3+
import static org.junit.Assert.assertEquals;
34
import static org.junit.Assert.assertNull;
5+
import static org.mockito.ArgumentMatchers.eq;
6+
import static org.mockito.Mockito.atLeast;
7+
import static org.mockito.Mockito.doNothing;
8+
import static org.mockito.Mockito.mock;
9+
import static org.mockito.Mockito.verify;
10+
import static org.mockito.Mockito.when;
411
import com.diffblue.cover.annotations.MaintainedByDiffblue;
512
import com.diffblue.cover.annotations.MethodsUnderTest;
613
import java.io.IOException;
714
import javax.servlet.ServletException;
815
import javax.servlet.http.HttpServletRequest;
9-
import javax.servlet.http.HttpServletRequestWrapper;
1016
import javax.servlet.http.HttpServletResponse;
11-
import javax.servlet.http.HttpServletResponseWrapper;
12-
import org.junit.Ignore;
1317
import org.junit.Test;
1418
import org.junit.experimental.categories.Category;
19+
import org.mockito.Mockito;
20+
import org.springframework.mock.web.MockHttpServletRequest;
21+
import org.springframework.mock.web.MockHttpServletResponse;
22+
import org.springframework.mock.web.MockHttpSession;
23+
import org.springframework.mock.web.MockRequestDispatcher;
1524

1625
public class LoginServletDiffblueTest {
1726
/**
@@ -30,60 +39,114 @@ public void testNewLoginServlet() {
3039
/**
3140
* Test {@link LoginServlet#doGet(HttpServletRequest, HttpServletResponse)}.
3241
* <ul>
33-
* <li>When {@link HttpServletRequestWrapper#HttpServletRequestWrapper(HttpServletRequest)} with request is {@code null}.</li>
42+
* <li>Given {@link MockHttpSession#MockHttpSession()}.</li>
3443
* </ul>
3544
* <p>
3645
* Method under test: {@link LoginServlet#doGet(HttpServletRequest, HttpServletResponse)}
3746
*/
3847
@Test
39-
@Ignore("TODO: Complete this test")
4048
@Category(MaintainedByDiffblue.class)
4149
@MethodsUnderTest({"void LoginServlet.doGet(HttpServletRequest, HttpServletResponse)"})
42-
public void testDoGet_whenHttpServletRequestWrapperWithRequestIsNull() throws IOException, ServletException {
43-
// TODO: Diffblue Cover was only able to create a partial test for this method:
44-
// Reason: No inputs found that don't throw a trivial exception.
45-
// Diffblue Cover tried to run the arrange/act section, but the method under
46-
// test threw
47-
// java.lang.IllegalArgumentException: Request cannot be null
48-
// at javax.servlet.ServletRequestWrapper.<init>(ServletRequestWrapper.java:50)
49-
// at javax.servlet.http.HttpServletRequestWrapper.<init>(HttpServletRequestWrapper.java:47)
50-
// See https://diff.blue/R013 to resolve this issue.
50+
public void testDoGet_givenMockHttpSession() throws IOException, ServletException {
51+
// Arrange
52+
LoginServlet loginServlet = new LoginServlet();
53+
54+
MockHttpServletRequest request = new MockHttpServletRequest();
55+
request.setSession(new MockHttpSession());
56+
MockHttpServletResponse response = new MockHttpServletResponse();
57+
58+
// Act
59+
loginServlet.doGet(request, response);
5160

61+
// Assert
62+
assertEquals("WEB-INF/login.jsp", response.getForwardedUrl());
63+
}
64+
65+
/**
66+
* Test {@link LoginServlet#doGet(HttpServletRequest, HttpServletResponse)}.
67+
* <ul>
68+
* <li>Then {@link MockHttpServletResponse} (default constructor) ForwardedUrl is {@code WEB-INF/login.jsp}.</li>
69+
* </ul>
70+
* <p>
71+
* Method under test: {@link LoginServlet#doGet(HttpServletRequest, HttpServletResponse)}
72+
*/
73+
@Test
74+
@Category(MaintainedByDiffblue.class)
75+
@MethodsUnderTest({"void LoginServlet.doGet(HttpServletRequest, HttpServletResponse)"})
76+
public void testDoGet_thenMockHttpServletResponseForwardedUrlIsWebInfLoginJsp() throws IOException, ServletException {
5277
// Arrange
5378
LoginServlet loginServlet = new LoginServlet();
54-
HttpServletRequestWrapper request = new HttpServletRequestWrapper(null);
79+
MockHttpServletRequest request = new MockHttpServletRequest();
80+
MockHttpServletResponse response = new MockHttpServletResponse();
5581

5682
// Act
57-
loginServlet.doGet(request, new HttpServletResponseWrapper(null));
83+
loginServlet.doGet(request, response);
84+
85+
// Assert
86+
assertEquals("WEB-INF/login.jsp", response.getForwardedUrl());
5887
}
5988

6089
/**
6190
* Test {@link LoginServlet#doPost(HttpServletRequest, HttpServletResponse)}.
6291
* <ul>
63-
* <li>When {@link HttpServletRequestWrapper#HttpServletRequestWrapper(HttpServletRequest)} with request is {@code null}.</li>
92+
* <li>Then {@link MockHttpServletResponse} (default constructor) ForwardedUrl is {@code Resource}.</li>
6493
* </ul>
6594
* <p>
6695
* Method under test: {@link LoginServlet#doPost(HttpServletRequest, HttpServletResponse)}
6796
*/
6897
@Test
69-
@Ignore("TODO: Complete this test")
7098
@Category(MaintainedByDiffblue.class)
7199
@MethodsUnderTest({"void LoginServlet.doPost(HttpServletRequest, HttpServletResponse)"})
72-
public void testDoPost_whenHttpServletRequestWrapperWithRequestIsNull() throws IOException, ServletException {
73-
// TODO: Diffblue Cover was only able to create a partial test for this method:
74-
// Reason: No inputs found that don't throw a trivial exception.
75-
// Diffblue Cover tried to run the arrange/act section, but the method under
76-
// test threw
77-
// java.lang.IllegalArgumentException: Request cannot be null
78-
// at javax.servlet.ServletRequestWrapper.<init>(ServletRequestWrapper.java:50)
79-
// at javax.servlet.http.HttpServletRequestWrapper.<init>(HttpServletRequestWrapper.java:47)
80-
// See https://diff.blue/R013 to resolve this issue.
100+
public void testDoPost_thenMockHttpServletResponseForwardedUrlIsResource() throws IOException, ServletException {
101+
// Arrange
102+
LoginServlet loginServlet = new LoginServlet();
103+
MockHttpServletRequest request = mock(MockHttpServletRequest.class);
104+
when(request.getRequestDispatcher(Mockito.<String>any())).thenReturn(new MockRequestDispatcher("Resource"));
105+
doNothing().when(request).setAttribute(Mockito.<String>any(), Mockito.<Object>any());
106+
when(request.getParameter(Mockito.<String>any())).thenReturn("https://example.org/example");
107+
doNothing().when(request).removeAttribute(Mockito.<String>any());
108+
MockHttpServletResponse response = new MockHttpServletResponse();
81109

110+
// Act
111+
loginServlet.doPost(request, response);
112+
113+
// Assert
114+
verify(request, atLeast(1)).getParameter(Mockito.<String>any());
115+
verify(request).getRequestDispatcher(eq("WEB-INF/login.jsp"));
116+
verify(request).removeAttribute(eq("msg"));
117+
verify(request, atLeast(1)).setAttribute(Mockito.<String>any(), Mockito.<Object>any());
118+
assertEquals("Resource", response.getForwardedUrl());
119+
}
120+
121+
/**
122+
* Test {@link LoginServlet#doPost(HttpServletRequest, HttpServletResponse)}.
123+
* <ul>
124+
* <li>Then {@link MockHttpServletResponse} (default constructor) ForwardedUrl is {@code Resource}.</li>
125+
* </ul>
126+
* <p>
127+
* Method under test: {@link LoginServlet#doPost(HttpServletRequest, HttpServletResponse)}
128+
*/
129+
@Test
130+
@Category(MaintainedByDiffblue.class)
131+
@MethodsUnderTest({"void LoginServlet.doPost(HttpServletRequest, HttpServletResponse)"})
132+
public void testDoPost_thenMockHttpServletResponseForwardedUrlIsResource2() throws IOException, ServletException {
82133
// Arrange
83134
LoginServlet loginServlet = new LoginServlet();
84-
HttpServletRequestWrapper request = new HttpServletRequestWrapper(null);
135+
MockHttpServletRequest request = mock(MockHttpServletRequest.class);
136+
when(request.getRequestDispatcher(Mockito.<String>any())).thenReturn(new MockRequestDispatcher("Resource"));
137+
doNothing().when(request).setAttribute(Mockito.<String>any(), Mockito.<Object>any());
138+
when(request.getParameter(Mockito.<String>any())).thenReturn("");
139+
doNothing().when(request).removeAttribute(Mockito.<String>any());
140+
MockHttpServletResponse response = new MockHttpServletResponse();
85141

86142
// Act
87-
loginServlet.doPost(request, new HttpServletResponseWrapper(null));
143+
loginServlet.doPost(request, response);
144+
145+
// Assert
146+
verify(request, atLeast(1)).getParameter(Mockito.<String>any());
147+
verify(request).getRequestDispatcher(eq("WEB-INF/login.jsp"));
148+
verify(request).removeAttribute(eq("msg"));
149+
verify(request, atLeast(1)).setAttribute(Mockito.<String>any(), Mockito.<Object>any());
150+
assertEquals("Resource", response.getForwardedUrl());
88151
}
89152
}

0 commit comments

Comments
 (0)