gpt4 book ai didi

c# - 如何让单元测试知道 Application.Resources

转载 作者:太空狗 更新时间:2023-10-29 22:27:50 27 4
gpt4 key购买 nike

我的 WPF 项目的 Application.Resources 区域中包含一个 ResourceDictionary。这个

来自 App.xaml(以这种 SO response 的方式):

App.xaml:

<Application.Resources>    
<ResourceDictionary>
<ResourceDictionary.MergedDictionaries>
<ResourceDictionary
Source="MyDictionary.xaml">
</ResourceDictionary>
</ResourceDictionary.MergedDictionaries>
</ResourceDictionary>
</Application.Resources>
</Application>

在这本词典中,我有几种样式,包括页面样式:

MyDictionary.xaml:

<SolidColorBrush x:Key="PageBackgroundBrush" 
Color="Black" />

<Style x:Key="PageStyle" TargetType="Page">
<Setter Property="Background" Value="{StaticResource ResourceKey=PageBackgroundBrush}" />
<Setter Property="Height" Value="Auto" />
<Setter Property="Width" Value="Auto" />
</Style>

MyPage.xaml:

<Page x:Class="MyProject.MyPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
mc:Ignorable="d"
d:DesignHeight="300" d:DesignWidth="250"
Title="Page"
Style="{StaticResource ResourceKey=PageStyle}"
>
<Grid>
</Grid>
</Page>

MyPage.xaml.cs

public class MyPage : Page
{
public MyPage()
{
// this part crashes during unit tests because 'PageStyle' was not found
InitializeComponent();
}
}

当 Visual Studio 在设计模式下查看页面和运行项目时,此设置都运行良好。

我正在使用 Visual Studio's built in Unit Test tools .当我尝试对 MyPage 类(在构造函数触发时使用 MyPage.xaml)进行单元测试时,我的测试失败了。 MyPage.xaml 使用 Application.Resources 中包含的字典中定义的样式。测试无法识别 PageStyle,因为单元测试开始时未包含 Application.Resources,因此页面无法实例化。如何在我的单元测试中包含我的 Application.Resources?或者,是否有更好的方法来为 WPF 页面和窗口运行单元测试?

最佳答案

根据您的评论,我建议您使用 Model-View-ViewModel (MVVM)或任何其他从 GUI 级组件中提取尽可能多的逻辑并在那里测试该逻辑的方案。它并没有直接解决您当前的问题,但事实是 GUI 逻辑是出了名的难以测试 - 在我看来,对于 MS Test 和其他单元测试运行器来说,如此困难以至于不值得。

对 GUI 进行单元测试非常痛苦(我试过)。通常有更好的工具。

关于c# - 如何让单元测试知道 Application.Resources,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9121191/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com