ساخت گزارش Code coverage مربوط به تستها
نویسنده: زمانی فرهاد
تاریخ: ۱۴۰۰/۰۸/۲۷ ۱۵:۳۵
آدرس: www.dntips.ir
| مطالب | ۳۶۹۴ |
| نویسندگان | ۲۷۶ |
| گروههای مطالب | ۱۰۲۴ |
| نقشههای راه | ۱۱۹ |
| دورهها | ۱۴ |
| اشتراکها | ۱۷۹۱۴ |
[Fact]
public async Task AverageUsersAge_When_Repository_Return_Null_Then_Zero_Should_Be_Returned()
{
_userRepository.Setup(a => a.GetAllUsers())
.ReturnsAsync((List<User>)null);
var result = await _userService.AverageUsersAge();
result.Should().Be(0);
}
[Fact]
public async Task AverageUsersAge_When_Repository_Return_Empty_Then_Zero_Should_Be_Returned()
{
_userRepository.Setup(a => a.GetAllUsers())
.ReturnsAsync(new List<User>());
var result = await _userService.AverageUsersAge();
result.Should().Be(0);
}
[Fact]
public async Task AverageUsersAge_When_Repository_Return_List_Of_Users_Then_Average_Of_Age_Should_Be_Retunred()
{
_userRepository.Setup(a => a.GetAllUsers())
.ReturnsAsync(UserMockData.People);
var result = await _userService.AverageUsersAge();
var expected = (UserMockData.AdultUser.Age + UserMockData.ChildUser.Age + UserMockData.InfantUser.Age) / 3;
result.Should().Be(expected);
} dotnet tool install -g dotnet-reportgenerator-globaltool
dotnet test --collect:"XPlat Code Coverage"
reportgenerator -reports:"C:\Users\Farhad\source\repos\xUnitExample\xUnitExample.Tests\TestResults\*\coverage.cobertura.xml" -targetdir:"coveragereport" -reporttypes:Html
2021-11-18T14:05:02: Arguments 2021-11-18T14:05:02: -reports:C:\Users\Farhad\source\repos\xUnitExample\xUnitExample.Tests\TestResults\*\coverage.cobertura.xml 2021-11-18T14:05:02: -targetdir:coveragereport 2021-11-18T14:05:02: -reporttypes:Html 2021-11-18T14:05:02: Writing report file 'coveragereport\index.html' 2021-11-18T14:05:02: Report generation took 0.3 seconds
در عکس ارسال شده، تستهای نوشته شده برای تمامی لایهها به صورت جدا ایجاد شدهاست.
تست مربوط به UserService:
در عکس بالا قسمتهایی که تست شدهاند، با رنگ سبز مشخص میشود و اگر قسمتی از کد تست نشده باشد، با رنگ قرمز مشخص میشود.
برای مثال در عکس زیر مشخص شدهاست که برای فایل ApplicationConfiguration هیچ تستی نوشته نشدهاست.
اگر از CICD استفاده میکنید، میتوانید در قسمت CI پروژه، هربار دستورات بالا را اجرا کنید و Code coverage مربوط به هر Build را به صورت جداگانه در کنار فایلهای آپلود شده داشته باشد.
نکته: برای اجرای دستورات بالا و ساخت گزارش باید ورژن SDK نصب شده بر روی سیستم شما برابر 2.2.401 یا بیشتر باشد و ورژن Microsoft.NET.Test.Sdk برابر 16.5.0 یا بیشتر باشد.