Let's look at some tests.
Ok, so we can assume there is some
Controller functionality. But to really know more, we have to dig deeper.
Looking at the
User test folder, have we gained more insight? It is only when diving into
UserTests that we get to see what our functionality really is. And here, we see the same old same old:
- A class, testing many different (and separate) things regarding
- Long tests names all starting with
I am going to make a statement: Well written tests serve as documentation.
Duplication and not adhering to the Single Responsibility Principle makes our tests hard to read, hard to maintain and we have to dig around in the code to figure out what is actually going on.
How can we make this better? By being specific! We can use namespaces/folders to extract duplication and serve as an overview of functionality. By following the Single Responsibility Principle, we can advance our initial understanding by having well named files that point to single area's of functionality.
Let's look at an example.
Right of the bat, we can see that we are dealing with content and more specifically content creation and publishing.
Even more functionality is exposed by opening these folders. And when finally looking at the actual test classes, a very good overview what our code should actually be doing is gained.
Up to this point, we have not read any code. This is much better than
ContentFactoryTests would ever be. When reading the actual code, some attention needs to be paid to the namespace and class name to get all the information regarding the tests, but this is minor to the readability gained on a folder level.
public class ThrowExceptionIf
public void BrowsableIdentifierNotSet()
public void BrowsableDisplayNameNotSet()
Personally, I think this is great, but I would love to hear your comments, suggestions and improvements!