保存当前状态并在使用 xUnit 运行 测试后恢复它
Save current state and revert it after running tests with xUnit
我使用 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
接口class,将您要恢复的信息保存在构造函数中,然后按照dispose pattern implementation;在每个测试用例结束时恢复它。
您还 this alternative 使用收集固定装置,但这是更一般的 setup/teardown,所以我认为这不适合您的情况。
两种备选方案都有更详细的描述 here。
我使用 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
接口class,将您要恢复的信息保存在构造函数中,然后按照dispose pattern implementation;在每个测试用例结束时恢复它。
您还 this alternative 使用收集固定装置,但这是更一般的 setup/teardown,所以我认为这不适合您的情况。
两种备选方案都有更详细的描述 here。