There is another option called, @EnableWebMvc / mockMvc through which you can test your controller layer.
Code snippet given below,
* * The TransactionsControllerTest class implements Junit functionality that * simply connect to the controller layer (TransactionsController) and test the * controller layer with some pre-defined/test value. This class also provides * the details result for each test cases. * * @author Sibsankar Bera * @version 1.0 * @since 2018-08-31 */ @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = { TransactionsController.class, AppConfig.class, AppInitializer.class }) @EnableWebMvc public class TransactionsControllerTest { private static final Logger logger = Logger.getLogger(TransactionsControllerTest.class.getName()); private MockMvc mockMvc = null; String values = null;
@InjectMocks
private WebApplicationContext wac;
/**
* This Junit test method assigns required resources value before use.
*/
@Before
public void setup() throws Exception {
values = TransactionConstant.AUTHORIZATION_CODE;
mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();
}
/**
* This Junit test method is used to test controller layer api,
* "/transactions/getAllTransactionList"
*/
@Test
public void getAllTransactionList_Test() {
try {
logger.info("Logger Name: getAllTransactionList_Test() :: " + logger.getName());
ObjectMapper mapper = new ObjectMapper();
MvcResult result = mockMvc.perform(get("/getAllTransactionList").header("authorization_code", values))
.andReturn();
JsonNode root = mapper.readTree(result.getResponse().getContentAsString());
JsonNode resultNodes = root.path("result");
logger.debug("Junit Response :: resultNodes :: getAllTransactionList_Test() :: " + resultNodes.asText());
assertEquals(resultNodes.asText(), "success");
} catch (Exception e) {
logger.error("Junit :: Exception :: getAllTransactionList_Test() :: ", e);
}
}