gpt4 book ai didi

c# - 多文件删除方法单元测试成功

转载 作者:行者123 更新时间:2023-12-02 04:41:57 24 4
gpt4 key购买 nike

我最近问了一个问题,但没有得到我可以采取行动的答案。我认为这是由于包含了很长的代码示例。我决定用更小的代码示例发布另一个问题。我想对以下方法进行单元测试以确保它确实有效并确保它删除指定目录中的所有 .xml 文件。

private static void DeleteXmlFiles(string XmlFileDirectory)
{
foreach (var file in Directory.GetFiles(XmlFileDirectory, "*.Xml"))
{
File.Delete(file);
}
}

有没有人有任何我可以查看的单元测试代码片段,在这种情况下对我有帮助?

下面是我在测试方法中的所有内容,基本上不多:

[Test]
public void can_delete_all_files_from_specified_directory()
{
string inputDir = @"C:\TestFiles\";
var sut = new FilesUtility();
var deleteSuccess = sut.
}

最佳答案

为了单元测试您的方法,您应该单独测试它。 IE。不应有任何真实的类,如 DirectoryFile 您的 SUT 与之交互。因此,您有三个选择:

  • 创建您的类将依赖的抽象,并模拟该抽象以进行测试(Moq 会这样做)
  • 模拟静态方法进行测试。最小起订量在这里无能为力,但可以使用 TypeMock , Moles , JustMock等等
  • 进行验收集成测试而不是单元测试(Specflow 适合编写验收测试)

最后一种方法非常简单 - 在每次测试运行前创建新文件夹,并在测试运行后删除它

private string path =  @"C:\TestFiles\";

[SetUp]
public void Setup()
{
Directory.CreateDirectory(path);
}

[TearDown]
public void Deardown()
{
Directory.Delete(path);
}

[Test]
public void ShouldRemoveAllFilesFromSpecifiedDirectory()
{
// seed directory with sample files
FileUtility.DeleteXmlFiles(path);
Assert.False(Directory.EnumerateFiles(path).Any());
}

关于c# - 多文件删除方法单元测试成功,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20660983/

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