DEV Community

Jéssica Nathany
Jéssica Nathany

Posted on • Updated on

Tools o improve your unit test with .NET

Alt Text

In this article, I will show you some kind tools for you can write unit test better and make you job easier. In this case, I'm using here the Dotnet platform C# language. But first, let's understand some concepts.

Test stuntmen

First, what are test stuntmen? They are fake implementation the object real can be simulated the unit real or the object real.

Mock
Are what we are talking about here: objects pre-programmed with expectations which form a specification of the calls they are expected to receive.

Stubs
Provide canned answers to calls made during the test, usually not responding at all to anything outside what's programmed in for the test.

Fakes
Are objects actually have working implementations, but usually take some shortcut that makes them not suitable for production (an in-memory database is a good example).

Spies
Are stubs that also record some information based on how they were called. One form of this might be an email service that records how many messages it was sent.

Dummy
Are objects are passed around but never actually used. Usually, they are just used to fill parameter lists.
Fake objects actually have working implementations, but usually take some.

XUnit Code Snippets

If you use these "code snippets", you can save time coding/typing to create unit test code based on xUnit framework. You can use write the command below I will show two options.

You can download the Snippets in your Visual Studio

Alt Text

Use command below
1.xtestm [Tab] or
2.fact [Tab]

Then, this snippet expanded following C# code.

Alt Text

Alt Text

NBuilder

Is a library that allows you to rapidly create test data, automatically. Some examples below.

Alt Text

Alt Text

Its a great idea and helps facilitates the process if you need to generate a quantity of data for testing.

Faker.NET

This library is different the NBuilder, because if you want something which looks like actual names, address, email, telephone, etc you can use Faker.NET.

Alt Text

Coverlet

Coverlet is a cross platform code coverage framework for .NET, with support for line, branch and method coverage. It works with .NET Framework on Windows and .NET Core on all supported platforms.

Coverlet documentation reflect the current repository state of the features, not the released ones.
Check the changelog to understand if the documented feature you want to use has been officially released. You can see for more details in Coverlet Github

Let´s first install the package coverlet in your test project in image below.

Alt Text

Now we can configure the tests to execute, for to generate the XML file format, for code coverage with the command and image below.

dotnet test --verbosity minimal --collect:"XPlat Code Coverage"

Alt Text

The option --collect:”XPlat Code Coverage” will create the file coverage.cobertura.xml in a folder named identified by a GUID and located in the TestResults directory of the test project.

Alt Text

Install Report Generator the command below.

dotnet tool install --global dotnet-reportgenerator-globaltool --version 4.8.6

Alt Text

In the power shell open the folder where the xml file was generated, and write the command reportgenerator "-reports:coverage.cobertura.xml" "-targetdir:coveragereport" -reporttypes:Html

Alt Text

Alt Text

As you can see, the report generator created files in which it shows the test coverage of your code.

Alt Text

Alt Text

Alt Text

Alt Text

Conclusion

Whenever I can, I write an article to document my programs and processes so I don't forget. Here I have put some tools that I use in my personal projects and at work to improve the way I write my unit tests, and observe test coverage. I hope you enjoyed it and it helps you.

References

Martin Fowler - article MocksArentStubs
Documentation dotnet core unit testing code
Jerrie Pelser
Coverlate

Links
Unit Test project in Github
Mock4 Quickstart
NBuilder GitHub
Faker.NET
NBuilder documentation
XUnitCodeSnippets
Link package Moq
coverlet.msbuild
coverlet-coverage

Top comments (0)