【问题标题】:Save current state and revert it after running tests with xUnit保存当前状态并在使用 xUnit 运行测试后恢复它
【发布时间】:2020-02-10 00:01:23
【问题描述】:

我使用 xUnit 为我的 SetDesktopWallpaper() 静态方法创建了一些测试。
顾名思义,就是改变当前用户的桌面壁纸。

这是我的一项测试。

[Theory]
[InlineData(@".\Resources\JpgWallpaper.jpg")]
[InlineData(@".\Resources\PngWallpaper.png")]
public void Changing_Wallpaper_File_Should_Work(string value)
{
    const string keyName = @"HKEY_CURRENT_USER\Control Panel\Desktop";
    const string keyVal1 = "WallPaper";

    WallChanger.SetDesktopWallpaper(value);

    Assert.Equal(Path.GetFullPath(value), Registry.GetValue(keyName, keyVal1, null).ToString());
}

我希望它在测试开始时保存当前壁纸并在结束时将其放回。 如何使用 xUnit 实现这一目标?

【问题讨论】:

    标签: c# windows .net-core xunit.net


    【解决方案1】:

    根据提供的上下文,我将在您的测试类中实现IDisposable 接口,将您要恢复的信息保存在构造函数中,并遵循dispose pattern implementation;在每个测试用例结束时恢复它。

    您也有 this alternative 使用收集装置,但这是用于更一般的设置/拆卸,所以我认为这不是您的情况。

    here 更详细地描述了这两种替代方案。

    【讨论】:

      猜你喜欢
      • 2016-01-12
      • 1970-01-01
      • 2021-08-03
      • 2019-11-06
      • 1970-01-01
      • 1970-01-01
      • 2019-10-10
      • 2015-03-21
      相关资源
      最近更新 更多