Vertical slices in ASP.NET MVC

Why? In ASP.NET MVC, applications are divided into horizontal layers, which is reflected in the project structure: Controllers Views Models Scripts Style It’s a good idea to divide you application into logical parts. While the idea of horizontal slices might look like a good idea, in practice I have noticed that it’s not necessarily the […]

Testing REST clients

With the proliferation of REST API’s, external ones and internal ones (think microservices), we very often find ourselves depending on these external services in our applications. Usually we have some designated class in front of the access to such a REST API. That class takes care of authentication, serialization and other plumbing. Testing this part […]

New features in C# 7, part 2

In my previous post about probable new features in C# 7, I talked about Tuples, Record Types and Pattern Matching. These are the most obvious candidates for inclusion. In this post I want to highlight a few more new features that are not getting as much attention but are also very useful features. C# 7 […]

C# 7: New Features

It seems like only yesterday we got C# 6, but as it goes in software development land, the next thing is already on its way. In this post I want to describe the most likely new C# 7 features, what they look like and why they’re useful. C# 7 Tuples Update 22/07/2016: Tuples are planned […]

The test pyramid

The test pyramid is a concept that was developed by Mike Cohn. It states that you should have an appropriate amount of each type of test. In the pyramid he distinguishes different types of tests: Exploratory tests: Performed manually by a tester System tests: Executed by a program or script that automates the UI (also […]

How to ditch your ORM

In my previous post on how to simplify code by using composition I talked about how we can reduce complexity by removing an AOP-framework (or annotations-based programming). In this post I want to continue on the same line and talk about how we can reduce complexity by removing an ORM and replacing it by a […]

Simplify code by using composition

In my post about software simplicity I talked about how we introduce complexity in software without realizing it. In this post I want to discuss a pattern that allows you to get rid of the complexity introduced by using annotations or aspect oriented concepts. Let’s take a look at a basic example: public class TaskService […]

Automated acceptance testing with Cucumber for .NET and JAVA

One of the biggest problems in software development is communication. Although we have a lot of technology at hand, the more complex a project is, the harder it is to communicate efficiently. In order to improve the interaction between clients, project managers, analysts and developers, a definition of the requirements is needed.Another important part is […]

Flexible and expressive unit tests with the builder pattern

Unit tests become more valuable if they are expressive and flexible. A good unit test should not only test your code, but also document it. Creating expressive and flexible unit tests is not always easy however. The reason of this is that there’s an inherit discrepancy between the goals of the client of your code […]