Spring Modulith – An Architecture Guard

Spring Modulith is now available in version 1.3.0. So it’s time to write an article about this framework. I have created many microservices with Spring Boot over the last few years, but of course that doesn’t mean that you can’t also create large, monolithic applications with the framework.

Consumer Contract Testing

Anyone who has ever worked with Web APIs, and who hasn’t, will be aware of the difficulties of testing in an API environment. When testing an API, there are two sides to consider, that of the producer and that of the consumer. If both do not work hand in hand, then problems are inevitable. Consumer contract tests are designed to avoid some of the difficulties in API testing.

Mutation Testing

Java Bibliotheken

When I first heard about mutation testing, I was – to put it kindly – very confused. The idea that we change our code to see which tests fail doesn’t look particularly promising at first glance. But if you take a closer look at the approach, you realize the potential it holds.

Mockito – Der Spion der mich hasste

Die Bibliothek Mockito ist in der Test-Driven Software Entwicklung kaum noch wegzudenken. Die Möglichkeit komplexe Interaktionen mit APIs durch Mocks simulieren zu lassen, vereinfacht und beschleunigt die Implementierung eigener Anwendungen. Leider gibt es aber immer wieder kleine Stolperfallen in der Verwendung dieses ansonsten hervorragenden Framework.

Personas für Unit Tests (Teil 2)

JUnit 5 bietet mit seiner Extension Model einen leichtgewichtigen Ansatz um Testdaten direkt in die jeweilige Testmethode zu injizieren. Im Beitrag Personas für Unit Tests wurde gezeigt, wie mit dem ParameterResolver und dem InvocationInterceptor Testdaten vor der Testausführung generiert und manipuliert werden können. Ausgeblendet wurde dabei die Zuweisung der Persona Eigenschaften auf die Testobjekte im FakePersonaBuilder.

Personas für Unit Tests

Mit dem Extension Model von JUnit 5 gibt es Vielzahl neuer Möglichkeiten, das Schreiben von Unit Tests zu vereinfachen. In den Beiträgen Dependency Injection mit ParameterResolver in JUnit 5 und Zufallswerte in JUnit 5 wurde der JUnit 5 ParameterResolver behandelt. Dieser Beitrag stellt den InvocationInterceptor vor.

Ab die Post (Teil 2)

Im vorherigen Beitrag zu JavaMail API wurde die Bibliothek GreenMail vorgestellt. Mit dieser Bibliothek ist es möglich, verschiedene E-Mail Server zu simulieren. Da keine überzeugende JUnit 5 Unterstützung existiert, lag die Idee nahe, eine eigene JUnit Extension zu schreiben. Während der Implementierung zeigten sich erste Ideen als unnütz, das Verständnis der GreenMail API verbesserte sich und die eigene Art zu Testen wirkte sich natürlich auf die Gestaltung der Erweiterung aus.