添加了测试WPF的单元测试

This commit is contained in:
2025-07-27 21:09:36 +08:00
parent 4a56405629
commit 8b9b096df9
5 changed files with 130 additions and 0 deletions

View File

@@ -0,0 +1,33 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFramework>net8.0-windows7.0</TargetFramework>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<IsPackable>false</IsPackable>
<IsTestProject>true</IsTestProject>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="AutoMapper.Extensions.Microsoft.DependencyInjection" Version="12.0.1" />
<PackageReference Include="Bogus" Version="35.6.3" />
<PackageReference Include="coverlet.collector" Version="6.0.0" />
<PackageReference Include="JetBrains.Annotations" Version="2025.1.0-eap1" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection" Version="9.0.7" />
<PackageReference Include="Microsoft.NET.Test.Sdk" Version="17.8.0" />
<PackageReference Include="Moq" Version="4.20.72" />
<PackageReference Include="xunit" Version="2.5.3" />
<PackageReference Include="xunit.runner.visualstudio" Version="2.5.3" />
</ItemGroup>
<ItemGroup>
<Using Include="Xunit" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\DMS.Application\DMS.Application.csproj" />
<ProjectReference Include="..\DMS.WPF\DMS.WPF.csproj" />
</ItemGroup>
</Project>

View File

@@ -0,0 +1,10 @@
namespace DMS.WPF.UnitTests;
public class UnitTest1
{
[Fact]
public void Test1()
{
}
}

View File

@@ -0,0 +1,36 @@
using AutoMapper;
using DMS.Application.DTOs;
using DMS.Application.Interfaces;
using DMS.WPF.Services;
using DMS.WPF.ViewModels;
using DMS.WPF.ViewModels.Dialogs;
using DMS.WPF.ViewModels.Items;
using Microsoft.Extensions.DependencyInjection;
using Moq;
namespace DMS.WPF.UnitTests.ViewModelTest
{
public class DevicesViewModelTests:BaseServiceTest
{
private readonly DevicesViewModel _devicesViewModel;
public DevicesViewModelTests()
{
_devicesViewModel= ServiceProvider.GetRequiredService<DevicesViewModel>();
}
[Fact]
public async Task AddDevice_Test()
{
// Arrange
// Act
await _devicesViewModel.AddDevice();
}
}
}

View File

@@ -0,0 +1,24 @@
using AutoMapper;
using DMS.Application.DTOs;
using DMS.WPF.ViewModels.Items;
namespace DMS.WPF.Profiles
{
public class MappingProfile : Profile
{
public MappingProfile()
{
CreateMap<DeviceDto, DeviceItemViewModel>().ConstructUsing(src => new DeviceItemViewModel(src));
CreateMap<DeviceItemViewModel, DeviceDto>();
CreateMap<MenuBeanDto, MenuBeanItemViewModel>()
.ForMember(dest => dest.Children, opt => opt.Ignore())
.ConstructUsing(src => new MenuBeanItemViewModel(src, null)); // 假设 NavigationService 可以通过依赖注入获取或在ViewModel中处理
CreateMap<MqttServerDto, MqttServerItemViewModel>().ConstructUsing(src => new MqttServerItemViewModel(src));
CreateMap<UserDto, UserItemViewModel>().ConstructUsing(src => new UserItemViewModel(src));
CreateMap<VariableHistoryDto, VariableHistoryItemViewModel>().ConstructUsing(src => new VariableHistoryItemViewModel(src));
CreateMap<VariableDto, VariableItemViewModel>().ConstructUsing(src => new VariableItemViewModel(src));
CreateMap<VariableMqttAliasDto, VariableMqttAliasItemViewModel>().ConstructUsing(src => new VariableMqttAliasItemViewModel(src));
CreateMap<VariableTableDto, VariableTableItemViewModel>().ConstructUsing(src => new VariableTableItemViewModel(src));
}
}
}

View File

@@ -0,0 +1,27 @@
using CommunityToolkit.Mvvm.ComponentModel;
using CommunityToolkit.Mvvm.Input;
using System;
using System.Threading.Tasks;
namespace DMS.WPF.ViewModels.Dialogs
{
public abstract partial class DialogViewModelBase<TResult> : ObservableObject
{
[ObservableProperty]
private string _title;
[ObservableProperty]
private string _primaryButContent;
public event Func<TResult, Task> CloseRequested;
[RelayCommand]
protected virtual async Task Close(TResult result)
{
if (CloseRequested != null)
{
await CloseRequested(result);
}
}
}
}