保存当前状态并在使用xUnit运行测试后将其还原

问题描述 投票:0回答:1

我使用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个回答
0
投票

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

您也有this alternative使用收集装置,但这是用于更常规的设置/拆卸,所以我认为这不是解决问题的方法。

这两种选择都在here中有更详细的描述。

© www.soinside.com 2019 - 2024. All rights reserved.