Skip to content

Commit 29b0521

Browse files
committed
add mockito tests
1 parent 5577348 commit 29b0521

File tree

4 files changed

+88
-3
lines changed

4 files changed

+88
-3
lines changed

2-0-servlet-api/hello-servlet-api/pom.xml

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,21 @@
1919
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
2020
</properties>
2121

22+
<dependencies>
23+
<dependency>
24+
<groupId>org.mockito</groupId>
25+
<artifactId>mockito-core</artifactId>
26+
<version>3.8.0</version>
27+
<scope>test</scope>
28+
</dependency>
29+
<dependency>
30+
<groupId>org.mockito</groupId>
31+
<artifactId>mockito-junit-jupiter</artifactId>
32+
<version>3.8.0</version>
33+
<scope>test</scope>
34+
</dependency>
35+
</dependencies>
36+
2237
<build>
2338
<plugins>
2439
<plugin>

2-0-servlet-api/hello-servlet-api/src/main/java/com/bobocode/hello_servlet/DateServlet.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@
1212
public class DateServlet extends HttpServlet {
1313

1414
@Override
15-
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
15+
public void doGet(HttpServletRequest request, HttpServletResponse response) throws IOException {
1616
response.setContentType("text/html");
1717
PrintWriter out = response.getWriter();
1818
out.println("<html><body align=\"center\">");

2-0-servlet-api/hello-servlet-api/src/test/java/com/bobocode/DateServletIT.java

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,9 @@
88

99
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
1010

11-
11+
/**
12+
* These tests are optional and must run after starting and deploying.
13+
*/
1214
public class DateServletIT {
1315
HttpServletConnection servletConnection = new HttpServletConnection();
1416

2-0-servlet-api/hello-servlet-api/src/test/java/com/bobocode/DateServletTest.java

Lines changed: 69 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,21 +1,56 @@
11
package com.bobocode;
22

33
import org.junit.jupiter.api.*;
4+
import org.junit.jupiter.api.extension.ExtendWith;
5+
import org.mockito.Mock;
6+
import org.mockito.junit.jupiter.MockitoExtension;
47
import org.reflections.Reflections;
58

9+
import javax.servlet.ServletOutputStream;
610
import javax.servlet.annotation.WebServlet;
711
import javax.servlet.http.HttpServlet;
12+
import javax.servlet.http.HttpServletRequest;
13+
import javax.servlet.http.HttpServletResponse;
14+
import java.io.IOException;
15+
import java.io.PrintWriter;
16+
import java.io.StringWriter;
17+
import java.lang.reflect.InvocationTargetException;
18+
import java.lang.reflect.Method;
19+
import java.time.LocalDate;
820
import java.util.Set;
21+
import static org.assertj.core.api.AssertionsForClassTypes.assertThat;
22+
23+
24+
import static org.mockito.Mockito.verify;
25+
import static org.mockito.Mockito.when;
26+
927

1028
@TestMethodOrder(MethodOrderer.OrderAnnotation.class)
29+
@ExtendWith(MockitoExtension.class)
1130
public class DateServletTest {
31+
32+
@Mock
33+
private HttpServletRequest request;
34+
35+
@Mock
36+
private HttpServletResponse response;
37+
38+
@Mock
39+
private ServletOutputStream outputStream;
40+
41+
private Object dateServletObject;
42+
private Class<?> dateServletClass;
43+
1244
public static final String SERVLET_PACKAGE = "com.bobocode.hello_servlet";
1345
public static final String DATE_SERVLET = "DateServlet";
1446
Reflections reflections;
1547

1648
@BeforeEach
17-
public void init() {
49+
public void init() throws ClassNotFoundException, IllegalAccessException, InvocationTargetException,
50+
InstantiationException {
1851
reflections = new Reflections(SERVLET_PACKAGE);
52+
dateServletClass = Class.forName(SERVLET_PACKAGE + "." + DATE_SERVLET);
53+
dateServletObject = dateServletClass.getConstructors()[0].newInstance();
1954
}
2055

2156
@Test
@@ -49,4 +84,37 @@ void dateServletIsAnnotated() {
4984
.findAny()
5085
.orElseThrow();
5186
}
87+
88+
@Test
89+
@Order(4)
90+
void dateServletContentTypeIsProper() throws IllegalAccessException,
91+
InvocationTargetException, NoSuchMethodException, IOException {
92+
Method doGetMethod = getDoGetMethod();
93+
94+
StringWriter stringWriter = new StringWriter();
95+
PrintWriter printWriter = new PrintWriter(stringWriter);
96+
when(response.getWriter()).thenReturn(printWriter);
97+
98+
doGetMethod.invoke(dateServletObject, request, response);
99+
verify(response).setContentType("text/html");
100+
}
101+
102+
@Test
103+
@Order(5)
104+
void dateServletReturnsDateInResponse() throws IOException, NoSuchMethodException, InvocationTargetException,
105+
IllegalAccessException {
106+
StringWriter stringWriter = new StringWriter();
107+
PrintWriter printWriter = new PrintWriter(stringWriter);
108+
when(response.getWriter()).thenReturn(printWriter);
109+
Method doGetMethod = getDoGetMethod();
110+
111+
doGetMethod.invoke(dateServletObject, request, response);
112+
assertThat(stringWriter.getBuffer().toString().contains(LocalDate.now().toString())).isTrue();
113+
}
114+
115+
private Method getDoGetMethod() throws NoSuchMethodException {
116+
Method doGetMethod = dateServletClass
117+
.getMethod("doGet", HttpServletRequest.class, HttpServletResponse.class);
118+
return doGetMethod;
119+
}
52120
}

0 commit comments

Comments
 (0)