测试删除测试文件的方法

时间:2013-10-04 15:49:04

标签: c# unit-testing

我有一个处理后删除文件的方法。我正在为它编写测试,使用测试项目中的相同文件。但正如预期的那样,每次执行后都会删除此文件。我怎么能成功...每次都回来?^^对不起,如果这对我来说非常愚蠢

4 个答案:

答案 0 :(得分:3)

如果您正在测试的代码删除它,那么您显然需要在每次测试之前重新创建它。您可以使用单元测试库中的“设置”工具来完成它。

如果您使用的是Visual Studio单元测试框架,则可以通过使用TestInitialize属性进行装饰来创建此方法:

[TestInitialize]
public void Setup()
{
   // recreate file here
}

如果您正在使用NUnit,请使用SetUp属性:

[SetUp]
public void Setup()
{
    // recreate file here
}

答案 1 :(得分:1)

我有一种类似的情况,我需要加载一个sqlite数据库并对其执行操作,然后处理它。

我最终将该文件包含为嵌入式资源,将资源流式传输并在测试设置方法中创建文件,然后在清理中将其删除。

答案 2 :(得分:0)

在测试设置中,您将创建该文件的测试版本,然后执行您的方法,然后检查文件是否已消失。

听起来好像你的测试是使用文件的'生产'版本 - 这是一个坏主意,为了使你的方法更可测试,应该传递文件的名称来处理和删除,所以你的可以使用测试文件进行测试。

答案 3 :(得分:0)

这取决于文件的性质和测试。通常,您希望让单元测试生成要对其进行操作的数据,以确保每次运行单元测试时都保持一致的数据集。

如果那是不可能或不可行的,那么我可能会做的是在单元测试中制作文件的副本,可能使用相同的名称加上.test扩展名,并将该文件传递给您正在测试的方法

如果您正在测试的方法以某种方式获取文件名,那么您可以执行相反的操作;在调用方法之前制作文件的副本,然后在方法执行后,将复制的文件重命名为原始文件名。