文章目錄
- 項目地址
- 一、Unit Testing
- 1.1 創建X unit 測試項目
- 1. 創建項目目錄
- 2. 管理包
- 1.2 創建CreateEntryDtoValidator測試
- 1.3 創建CreateEntryDtoValidator測試
- 二、Integration test
- 2.1 創建Integration test環境
- 1. 安裝所需要的包
- 2.2 配置基礎設置
- 1. 數據庫鏈接DevHabitWebAppFactory
- 2.創建測試共享類IntegrationTestCollection
- 3. 注入登錄用戶
- 2.3 添加測試用例
- 1. 測試用戶創建
- 2. 測試添加Habits
- 2.4 測試外部服務/微服務
- 1. 安裝所需要的包
- 2. 修改DevHabitWebAppFactory
- 3. 修改github的網址到配置里
項目地址
- 教程作者:
- 教程地址:
- 代碼倉庫地址:
- 所用到的框架和插件:
dbt
airflow
一、Unit Testing
- 適合單元測試的代碼
1.1 創建X unit 測試項目
1. 創建項目目錄
- 創建測試
- 目錄
2. 管理包
- 修改Packages.props
- 修改項目本身的包,并且添加項目引用到api項目
<Project Sdk="Microsoft.NET.Sdk"><PropertyGroup><IsPackable>false</IsPackable></PropertyGroup><ItemGroup><PackageReference Include="coverlet.collector" /><PackageReference Include="Microsoft.NET.Test.Sdk" /><PackageReference Include="xunit" /><PackageReference Include="xunit.runner.visualstudio" /></ItemGroup><ItemGroup><ProjectReference Include="..\DevHabit\DevHabit.Api\DevHabit.Api.csproj" /></ItemGroup><ItemGroup><Using Include="Xunit" /></ItemGroup></Project>
- 在api的項目配置中添加,我們就可以引用internal 類型在Unitest里
1.2 創建CreateEntryDtoValidator測試
- 創建CreateEntryDtoValidatorTests用來測試
namespace DevHabit.UnitTests.Validators;
public class CreateEntryDtoValidatorTests
{private readonly CreateEntryDtoValidator _validator = new();[Fact] // 用來定義不帶參數的獨立測試public async Task Validate_ShouldSucceed_WhenInputDtoIsValid(){// Arrangevar dto = new CreateEntryDto{HabitId = Habit.NewId(),Value = 1,Date = DateOnly.FromDateTime(DateTime.UtcNow)};// ActValidationResult validationResult = await _validator.ValidateAsync(dto);// AssertAssert.True(validationResult.IsValid);Assert.Empty(validationResult.Errors); //通過驗證,錯誤列表為空}[Fact]public async Task Validate_ShouldFail_WhenHabitIdIsEmpty(){// Arrangevar dto = new CreateEntryDto{HabitId = string.Empty,Value = 1,Date = DateOnly.FromDateTime(DateTime.UtcNow)};// ActValidationResult validationResult = await _validator.ValidateAsync(dto);// AssertAssert.False(validationResult.IsValid); //驗證失敗ValidationFailure validationFailure = Assert.Single(validationResult.Errors); //檢查錯誤列表里應該有且只有一個錯誤Assert.Equal(nameof(CreateEntryDto.HabitId), validationFailure.PropertyName); //驗證這個錯誤是針對 HabitId 字段的}
}
1.3 創建CreateEntryDtoValidator測試
- 為加密服務創建測試
public sealed class EncryptionServiceTests
{private