How to test FTP file exchanges with MockFtpServer

An application running in complete isolation is quite rare these days. Often, they integrate with other services to increase the value they deliver. When dealing with legacy applications, I often see the pattern of file transmission via FTP. Because the correct and stable integration of services can be an important part of business it should be tested properly.
In this blog post, I will show you how you can test the file transmission via FTP with MockFtpServer.

[Read More]

How to test the composition of Spring Data Specifications

In my blog post ‘How to use Spring Data’s Specification’ I showed you how you can write automated tests for your Spring Data Specifications. Although it explained how you can test a single specification, it missed a crucial part. The testing of composite specifications. In this follow-up post, I will close the gap left last time.

[Read More]

How to use Spring Data's Specification

The query methods of Spring Data JPA are a convenient way to retrieve data from your database. By simply defining methods in an interface, the framework can derive queries. For more complicated things, you can also define named queries and write your own JPQL or native SQL queries. However, with a growing application, this approach shows its drawbacks. New use-cases require new, but only slightly different, queries. The results are growing repositories that become harder and harder to maintain.
In this blog post, I’ll show you how to use Spring Data’s Specification to address this problem.

[Read More]

How to test any HTTP Client of your Spring Boot Application with MockServer

In an integration test, we want to test the interaction of several components of our application. However, as soon as one of these components communicates with a 3rd party service via HTTP, this can present us with a challenge. To be independent of this service, we have to mock it. In this blog post, I will show you how to do that with the help of MockServer.

[Read More]

How To Improve JUnit DisplayNames With The New 'Named' API

With JUnit Jupiters @ParameterizedTest annotation, you can execute the same test multiple times, but with different parameters. This is useful if you want to test the same code with different data. For Example, to test for special cases or limits. The annotation is used in combination with ArgumentSources like the @MethodSource. With this annotation, you can register a method as an argument provider which, like the name suggests, provides our test method with arguments. [Read More]

Testcontainers – How to use them in your Spring Boot Integration Tests

Probably, the most annoying thing about integration tests is the need for testing infrastructure. If we want to test our Spring Data Repositories, we need a database. We could just use the H2 in-memory database provided by Spring Boot but the problem with this approach is, that H2 is probably not the database we use at runtime. This means, our integration tests don’t tell us if our code works as expected when it runs in the production environment. [Read More]

How to test the Web Services of your Spring Boot Application with @WebServiceServerTest

The idea of applications that provide their services over the web is anything but new. Chances are quite high that you already implemented such a service through a REST API. But before REST, there was a different approach to providing such services - SOAP. The release of Spring Boot 2.6.0 introduced a new test slice to test the components involved in providing these services. Let’s have a look at it!

[Read More]