Home » Java » Enterprise Java » Spring test with thymeleaf for views

About Biju Kunjummen

Spring test with thymeleaf for views

I am a recent convert to thymeleaf for view templating in Spring based web applications, preferring it over jsp’s. All the arguments that thymeleaf documentation makes on why thymeleaf over jsp holds water and I am definitely sold.

One of the big reasons for me, apart from being able to preview the template, is the way the view is rendered at runtime. Whereas the application stack has to defer the rendering of jsp to the servlet container, it has full control over the rendering of thymeleaf templates. To clarify this a little more, with jsp as the view technology an application only returns the location of the jsp and it is upto the servlet container to render the jsp.

So why again is this a big reason – because using the mvc test support in spring-test module, now the actual rendered content can be asserted on rather than just the name of the view.

Consider a sample Spring MVC controller :

public class ShopController {

 public String listProducts(Model model) {
  model.addAttribute("products", this.productRepository.findAll());
  return "products/list";

Had the view been jsp based, I would have had a test which looks like this:

@ContextConfiguration(classes = SampleWebApplication.class)
public class ShopControllerWebTests {

 private WebApplicationContext wac;

 private MockMvc mockMvc;

 public void setup() {
  this.mockMvc = MockMvcBuilders.webAppContextSetup(this.wac).build();

 public void testListProducts() throws Exception {

the assertion is only on the name of the view.

Now, consider a test with thymeleaf used as the view technology:

public void testListProducts() throws Exception {
  .andExpect(content().string(containsString("Dummy Book1")));

Here, I am asserting on the actual rendered content.

This is really good, whereas with jsp I would had to validate that the jsp is rendered correctly at runtime with a real container, with thymeleaf I can validate that rendering is clean purely using tests.

Reference: Spring test with thymeleaf for views from our JCG partner Biju Kunjummen at the all and sundry blog.

Do you want to know how to develop your skillset to become a Java Rockstar?

Subscribe to our newsletter to start Rocking right now!

To get you started we give you our best selling eBooks for FREE!


1. JPA Mini Book

2. JVM Troubleshooting Guide

3. JUnit Tutorial for Unit Testing

4. Java Annotations Tutorial

5. Java Interview Questions

6. Spring Interview Questions

7. Android UI Design


and many more ....


Receive Java & Developer job alerts in your Area

I have read and agree to the terms & conditions


Notify of

This site uses Akismet to reduce spam. Learn how your comment data is processed.

1 Comment
Newest Most Voted
Inline Feedbacks
View all comments
Roberto Alves
4 years ago

Awesome post! But I use spring security and I couldn’t make login work, have you seem something?