I wanted to check the code coverage on a .NET Core project I am working on. But I am on MacOS, and unfortunately, Visual Studio for Mac nor JetBrains Rider (on MacOS) does not support code coverage as of today. JetBrains is going to port dotCover to be cross-platform so we will have Rider + dotCover in near future which is something to look forward to.
I found this brilliant tool coverlet developed by Toni Solarin-Sodara. Coverlet is a cross-platform code coverage library for .NET Core, with support for line, branch and method coverage. I just gave it a try now, it looks amazing and with very little steps, I can get the code coverage.
First I need to add the coverlet.msbuild nuget package to the unit test project.
# From the folder which contains UnitTests.csproj file dotnet add package coverlet.msbuild # If the folder contains multiple .csproj files, specify the targetted .csproj file dotnet add <MyProject.UnitTests.csproj>package coverlet.msbuild
Then I can just run,
But for some reason, I was getting this error "...coverlet.msbuild.targets: error: Failed to resolve assembly:...". After a little bit of googling, found this issue where it says to run dotnet test command with /p:CopyLocalLockFileAssemblies=true flag.
And yes, that did it and I am presented with most awaited code coverage.
There are a lot of options that you can configure with coverlet and you should definitely try it.
Hope this helps.
Happy Coding.
dotnet test <MyProject.UnitTests.csproj>/p:CollectCoverage=true
dotnet test <MyProject.UnitTests.csproj>/p:CollectCoverage=true /p:CopyLocalLockFileAssemblies=true
Code Coverage |
Hope this helps.
Happy Coding.
Regards,
Jaliya
No comments:
Post a Comment