Unit tests are a powerful and crucial part of programming. But it isn't enough if we want to know better if our code works. Complementing unit tests with service-level/integration and UI/end-to-end tests will make us know that our code really works. The test automation pyramid tells what is the good ratio between different tests.
Unit tests are my passion. I always write them and I also encourage others to write them and even have taught developers to write unit tests. But I am quite surprised how often developers don't write unit tests. There is a lot of benefits for writing unit tests. In this blog post, I will explain three main reasons why every developer should always write unit tests.
ApprovalTests is one of my favorite NuGet in C#. It helps you to verify is your method's output or object changed. It will automatically visualize the error by opening your diff tool and shows the difference there. I really recommend you to become familiar with this if you are a C# developer.
This is something that has made my integration tests better. You define a test method to run in transaction and rollback at the end of each test. This makes it possible to write integration tests that write to the database. And tests won't leave any "garbage" there because rollback at the end of the test undoes all database updates (and inserts and deletes). If this is possible in your language and testing framework I strongly recommend it. In this blog post I will explain how you can do it with NUnit in C#.