我使用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实现呢?
根据提供的上下文,我将在测试类中实现IDisposable
接口,将要还原的信息保存在构造函数中,然后跟随dispose pattern implementation;在每个测试用例结束时恢复它。
您也有this alternative使用收集装置,但这是用于更常规的设置/拆卸,所以我认为这不是解决问题的方法。
这两种选择都在here中有更详细的描述。