Close

Spring MVC - JUnit Test Examples

[Last Updated: Nov 9, 2025]

Spring MVC 


import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class CustomerControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/customers");
this.mockMvc.perform(builder)
.andExpect(ok);

}
}
Original Post




import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class MyMvcControllerHamcrestTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@BeforeEach
public void setup() {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController() throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status().isOk();

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(
"/employees?dept=IT");
this.mockMvc.perform(builder)
.andExpect(ok);


builder = MockMvcRequestBuilders.get("/employees?state=NC");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get("/employees?dept=IT&state=NC");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/employees/234/messages?sendBy=mgr&date=20160210");
this.mockMvc.perform(builder)
.andExpect(ok);


builder = MockMvcRequestBuilders.get("/employees/234/paystubs?months=5");
this.mockMvc.perform(builder)
.andExpect(ok);


builder = MockMvcRequestBuilders.get(
"/employees/234/paystubs?startDate=2000-10-31&endDate=2000-10-31");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get("/employees/234/report");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/employees/234/report?project=mara");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/employees/234/messages?sendBy=mgr&date=20160210");
this.mockMvc.perform(builder)
.andExpect(ok);

}
}
Original Post





import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.mock.web.MockMultipartFile;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class UploadControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status().isOk();

MockMultipartFile file = new MockMultipartFile("user-file", "test.txt",
null, "test data".getBytes());

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.fileUpload("/upload")
.file(file);
this.mockMvc.perform(builder).andExpect(ok);

}

}
Original Post






import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class RegistrationControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();
ResultMatcher registerView = MockMvcResultMatchers.view()
.name("user-registration");
ResultMatcher doneView = MockMvcResultMatchers.view()
.name("registration-done");

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/register");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(registerView);

builder = MockMvcRequestBuilders.post("/register")
.param("name", "KatieK")
.param("emailAddress", "kat@exmaple.com")
.param("password", "abcadf");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(doneView);

}
}
Original Post

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class UserControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(
"/users");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/users/23");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/users?querier=Joe");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/users/23?querier=Joe");
this.mockMvc.perform(builder)
.andExpect(ok);

}
}
Original Post




import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.junit.jupiter.SpringJUnitConfig;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.assertj.MockMvcTester;
import org.springframework.web.context.WebApplicationContext;
import static org.assertj.core.api.Assertions.assertThat;

@SpringJUnitConfig(classes = MyWebConfig.class)
@WebAppConfiguration
public class TradeControllerTest {

private final MockMvcTester mockMvcTester;

@Autowired
public TradeControllerTest(WebApplicationContext wac) {
this.mockMvcTester = MockMvcTester.from(wac);
}

@Test
void testUserController() {
// 1. Using explicit param() method (Cleaner than manual string building)
assertThat(mockMvcTester.get().uri("/trades/paramTest")
.param("buySell", "buy")
.param("buyCurrency", "EUR")
.param("sellCurrency", "USD"))
.hasStatusOk();

// 2. Query Params via URI (Still supported, but param() is usually preferred)
assertThat(mockMvcTester.get()
.uri("/trades?buySell=buy&"
+ "buyCurrency=EUR&"
+ "sellCurrency=USD"))
.hasStatusOk();

// 3. Path Variables (Simple template)
assertThat(mockMvcTester.get()
.uri("/trades/buy/EUR/USD"))
.hasStatusOk();

// 4. Path Variables using URI template arguments (Best Practice)
assertThat(mockMvcTester.get()
.uri("/trades/pathTest/{action}/{buy}/{sell}",
"buy", "EUR", "USD"))
.hasStatusOk();
}
}
Original Post





@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class MyMvcControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup() {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testMyMvcController() throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status().isOk();
ResultMatcher msg = MockMvcResultMatchers.model()
.attribute("msg", "Spring quick start!!");

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(msg);
}
}

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class RegistrationControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/message")
.contentType(MediaType.TEXT_PLAIN)
.content("test message");
this.mockMvc.perform(builder)
.andExpect(ok)
.andDo(MockMvcResultHandlers.print());

}

@Test
public void testFormPostController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/message")
.contentType("application/x-www-form-urlencoded")
.accept(MediaType.TEXT_PLAIN)
//use param instead of content
.param("name", "joe");

this.mockMvc.perform(builder)
.andExpect(ok);


}

@Test
public void testPostFormPostController () throws Exception {
ResultMatcher created = MockMvcResultMatchers.status()
.isCreated();

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.put("/message")
.contentType("application/x-www-form-urlencoded")
.accept(MediaType.TEXT_PLAIN)
.content("name=mike");
this.mockMvc.perform(builder)
.andExpect(created);


}
}
Original Post





@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class RegistrationControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/users/register")
.contentType(MediaType.APPLICATION_XML)
.content(createUserInXml(
"joe",
"joe@example.com",
"abc"));

//create one moe user
this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isCreated());

builder = MockMvcRequestBuilders.post("/users/register")
.contentType(MediaType.APPLICATION_XML)
.content(createUserInXml("mike",
"mike@example.com",
"123"));

this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isCreated());

//getting all users
builder = MockMvcRequestBuilders.get("/users")
.accept(MediaType.APPLICATION_XML);
this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk())
.andDo(MockMvcResultHandlers.print());

}

private static String createUserInXml (String name, String email, String password) {
return "<user>" +
"<name>" + name + "</name>" +
"<emailAddress>" + email + "</emailAddress>" +
"<password>" + password + "</password>" +
"</user>";
}
}
Original Post





@Test
public void testUserController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/users/register")
.contentType(MediaType.APPLICATION_JSON)
.content(createUserInJson("joe",
"joe@example.com",
"abc"));

this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isCreated());

// create one more user
builder = MockMvcRequestBuilders.post("/users/register")
.contentType(MediaType.APPLICATION_JSON)
.content(createUserInJson("mike",
"mike@example.com",
"123"));

this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isCreated());

// get all users
builder = MockMvcRequestBuilders.get("/users")
.accept(MediaType.APPLICATION_JSON);
this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk())
.andDo(MockMvcResultHandlers.print());

}

private static String createUserInJson (String name, String email, String password) {
return "{ \"name\": \"" + name + "\", " +
"\"emailAddress\":\"" + email + "\"," +
"\"password\":\"" + password + "\"}";
}
Original Post

@Test
public void testUserController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test/5");


this.mockMvc.perform(builder)
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.redirectedUrl(
"/test2/pathValue/5?attr=attrVal"));
}
Original Post





@Test
public void testController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test");


this.mockMvc.perform(builder)
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.redirectedUrl(
"test2?myModelAttribute=attributeVal"));
}
Original Post





@Test
public void testController3 () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test2/6");


this.mockMvc.perform(builder)
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.forwardedUrl(
"/testFinal2/6"));
}
Original Post

@Test
public void testUserController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/register")
.param("name", "KatieK")
.param("emailAddress",
"kat@exmaple.com")
.param("password", "abcadf");
this.mockMvc.perform(builder)
.andDo(MockMvcResultHandlers.print())
.andExpect(MockMvcResultMatchers.redirectedUrl(
"/registration-success"));
}
}
Original Post





@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class RegistrationControllerTest {

@Autowired
private WebApplicationContext wac;

@Autowired
private UserService userService;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testLogin () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/login")
.param("emailAddress",
"admin@exmaple.com")
.param("password", "password");
this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}

@Test
public void testPostLogin() throws Exception{
MockHttpSession session = new MockHttpSession();

User user = new User();
user.setEmailAddress("admin@example.com");
user.setPassword("password");
user = userService.loginUser(user);

session.setAttribute("user", user);

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/app")
.session(session);
this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk());

}

}
Original Post




Testing asynchronous processing


@Test
public void testController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test");


this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.request()
.asyncStarted())
.andExpect(MockMvcResultMatchers.request()
.asyncResult("async result"))
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




Testing asynchronous processing


@Test
public void testController () throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test");


this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.request()
.asyncStarted())
.andExpect(MockMvcResultMatchers.request()
.asyncResult("test async result"))
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post






import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.ResultMatcher;
import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
import org.springframework.test.web.servlet.setup.DefaultMockMvcBuilder;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.web.context.WebApplicationContext;

@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class RegistrationControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController () throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();
ResultMatcher registerView = MockMvcResultMatchers.view()
.name("user-registration");
ResultMatcher doneView = MockMvcResultMatchers.view()
.name("registration-done");

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/register");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(registerView);

builder = MockMvcRequestBuilders.post("/register")
.param("name", "KatieK")
.param("emailAddress", "kat@exmaple.com")
.param("password", "abcadf");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(doneView);

}
}




@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class MyMvcControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@BeforeEach
public void setup() {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testMyMvcController() throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status().isOk();
ResultMatcher msg = MockMvcResultMatchers.model()
.attribute("msg",
"Spring quick start!!");

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(msg);
}
}
Original Post





@RunWith(SpringJUnit4ClassRunner.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class MyMvcControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@Before
public void setup() {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testMyMvcController() throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status().isOk();
ResultMatcher msg = MockMvcResultMatchers.model()
.attribute("msg", "Spring quick start!!");

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get("/");
this.mockMvc.perform(builder)
.andExpect(ok)
.andExpect(msg);
}
}




@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = WebConfigProduce.class)
public class UserControllerTestProduce {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@BeforeEach public void setup () {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}


@Test
public void testMyMvcController () throws Exception {
ResultMatcher expected = MockMvcResultMatchers.jsonPath("userName")
.value("Joe");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/users")
.accept(MediaType.APPLICATION_JSON);
this.mockMvc.perform(builder)
.andExpect(expected);


}

@Test
public void testMyMvcController2 () throws Exception {
ResultMatcher expected = MockMvcResultMatchers.xpath("userName")
.string("Joe");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/users")
.accept(MediaType.APPLICATION_XML);
this.mockMvc.perform(builder)
.andExpect(expected);

}
}
Original Post




Testing Get method.

    @Test
public void testGet() throws Exception {

ResultMatcher viewMatcher =
MockMvcResultMatchers.view()
.name("GetMapping-view");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test");


this.mockMvc.perform(builder)
.andExpect(viewMatcher)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




Testing Post method.

    @Test
public void testPost() throws Exception {

ResultMatcher viewMatcher =
MockMvcResultMatchers.view()
.name("PostMapping-view");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.post("/test");


this.mockMvc.perform(builder)
.andExpect(viewMatcher)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




Testing Put method.

    @Test
public void testPut() throws Exception {

ResultMatcher viewMatcher =
MockMvcResultMatchers.view()
.name("PutMapping-view");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.put("/test");


this.mockMvc.perform(builder)
.andExpect(viewMatcher)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




Testing Delete method.

    @Test
public void testDelete() throws Exception {

ResultMatcher viewMatcher =
MockMvcResultMatchers.view()
.name("DeleteMapping-view");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.delete("/test");


this.mockMvc.perform(builder)
.andExpect(viewMatcher)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




Testing Patch method.

    @Test
public void testPatch() throws Exception {

ResultMatcher viewMatcher =
MockMvcResultMatchers.view()
.name("PatchMapping-view");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.patch("/test");


this.mockMvc.perform(builder)
.andExpect(viewMatcher)
.andExpect(MockMvcResultMatchers.status()
.isOk());
}
Original Post




import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.extension.ExtendWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.test.context.ContextConfiguration;
import org.springframework.test.context.junit.jupiter.SpringExtension;
import org.springframework.test.context.web.WebAppConfiguration;
import org.springframework.test.web.servlet.assertj.MockMvcTester;
import org.springframework.web.context.WebApplicationContext;
import static org.assertj.core.api.Assertions.assertThat;

@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class MyMvcControllerTest {

@Autowired
private WebApplicationContext wac;

private MockMvcTester mockMvc;

@BeforeEach
public void setup() {
this.mockMvc = MockMvcTester.from(wac);
}

@Test
void testUserController() {

assertThat(mockMvc.get().uri("/employees?dept=IT"))
.hasStatusOk();

assertThat(mockMvc.get().uri("/employees?state=NC"))
.hasStatusOk();

assertThat(mockMvc.get().uri("/employees?dept=IT&state=NC"))
.hasStatusOk();

assertThat(mockMvc.get()
.uri("/employees/234/messages?sendBy=mgr&date=20160210"))
.hasStatusOk();

assertThat(mockMvc.get().uri("/employees/234/paystubs?months=5"))
.hasStatusOk();

assertThat(mockMvc.get()
.uri("/employees/234/paystubs?startDate=2000-10-31"
+ "&endDate=2000-10-31"))
.hasStatusOk();

assertThat(mockMvc.get().uri("/employees/234/report"))
.hasStatusOk();

assertThat(mockMvc.get().uri("/employees/234/report?project=mara"))
.hasStatusOk();

assertThat(mockMvc.get()
.uri("/employees/234/messages?sendBy=mgr&date=20160210"))
.hasStatusOk();
}
}
Original Post




@ExtendWith(SpringExtension.class)
@WebAppConfiguration
@ContextConfiguration(classes = MyWebConfig.class)
public class TradeControllerHamcrestTest {

@Autowired
private WebApplicationContext wac;

private MockMvc mockMvc;

@BeforeEach
public void setup() {
DefaultMockMvcBuilder builder = MockMvcBuilders.webAppContextSetup(this.wac);
this.mockMvc = builder.build();
}

@Test
public void testUserController() throws Exception {
ResultMatcher ok = MockMvcResultMatchers.status()
.isOk();

MockHttpServletRequestBuilder builder = MockMvcRequestBuilders.get(
"/trades/paramTest?buySell=buy&buyCurrency=EUR&sellCurrency=USD");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get(
"/trades?buySell=buy&buyCurrency=EUR&sellCurrency=USD");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get("/trades/buy/EUR/USD");
this.mockMvc.perform(builder)
.andExpect(ok);

builder = MockMvcRequestBuilders.get("/trades/pathTest/buy/EUR/USD");
this.mockMvc.perform(builder)
.andExpect(ok);

}
}
Original Post




Testing Get method. (Using MockMvcTester + AssertJ)

    @Test
public void testGet() {
assertThat(mockMvc.get().uri("/test"))
.hasStatusOk()
.hasViewName("GetMapping-view");
}
Original Post




Testing POST method. (Using MockMvcTester + AssertJ)

    @Test
public void testPost() {
assertThat(mockMvc.post().uri("/test"))
.hasStatusOk()
.hasViewName("PostMapping-view");
}
Original Post




Testing PUT method. (Using MockMvcTester + AssertJ)

    @Test
public void testPut() {
assertThat(mockMvc.put().uri("/test"))
.hasStatusOk()
.hasViewName("PutMapping-view");
}
Original Post




Testing DELETE method. (Using MockMvcTester + AssertJ)

    @Test
public void testDelete() {
assertThat(mockMvc.delete().uri("/test"))
.hasStatusOk()
.hasViewName("DeleteMapping-view");
}
Original Post




Testing PATCH method. (Using MockMvcTester + AssertJ)

    @Test
public void testPatch() {
assertThat(mockMvc.patch().uri("/test"))
.hasStatusOk()
.hasViewName("PatchMapping-view");
}
Original Post




Testing Get method.

    @Test
public void testGet() throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.get("/test");


this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk())
.andDo(MockMvcResultHandlers.print());
}
Original Post




Testing HTTP Head request

    @Test
public void testHead() throws Exception {

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.head("/test");

this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk())
.andDo(MockMvcResultHandlers.print());
}
Original Post




Testing HTTP OPTIONS request

    @Test
public void testOptions() throws Exception {

ResultMatcher accessResponseHeader =
MockMvcResultMatchers.header()
.string("Allow",
"GET,HEAD,OPTIONS");

MockHttpServletRequestBuilder builder =
MockMvcRequestBuilders.options("/test");

this.mockMvc.perform(builder)
.andExpect(MockMvcResultMatchers.status()
.isOk())
.andExpect(accessResponseHeader)
.andDo(MockMvcResultHandlers.print());
}
Original Post




Testing Get method.

    @Test
public void testGet() {
assertThat(mockMvc.get().uri("/test"))
.hasStatusOk()
.bodyText().isEqualTo("test body");
}
Original Post




Testing HTTP Head request

    @Test
public void testHead() {
assertThat(mockMvc.head().uri("/test"))
.hasStatusOk();

}
Original Post




Testing HTTP OPTIONS request

    @Test
public void testOptions() {
assertThat(mockMvc.options().uri("/test"))
.hasStatusOk()
.headers()
.hasValue("Allow", "GET,HEAD,OPTIONS");
}
Original Post




See Also

Join