C#重新创建测试例外

时间:2018-01-29 22:12:47

标签: c# exception-handling

如何重新创建“指定的网络名称不再可用”,以便进行测试。

以下代码试图在同一网络上复制文件。如果与网络的连接丢失,我想回忆一下CopyFile方法,并在抛出异常之后几秒钟尝试运行它。测试此异常的最简单方法是什么?

private void CopyFile()
{
    int numberOfExecution = 0;
    bool copying = true;

    while (copying)
    {
        copying = false;

        try
        {
            File.Copy(file1, file2);
        }
        catch (Exception ex)
        {
            if (ex.Message.Contains("The specified network name is no longer available"))
            {
                numberOfExecution += 1;
                System.Threading.Thread.Sleep(5000);

                if (numberOfExecution >= 5)
                {
                    throw ex;
                }

                copying = true;
            }
            else
            {
                throw ex;
            }
        }
        finally
        {

        }
    }
}

1 个答案:

答案 0 :(得分:0)

我们的想法是创建一个测试,其中File.Copy解析为您为测试目的设置的静态方法,而不是System.IO.File.Copy。换句话说,你模仿File.Copy

您可以定制此方法以涵盖所有情况;首次尝试成功,首先失败,稍后成功,或者在所有尝试失败。

事实上,它并没有真正复制任何内容而只是返回或抛出与你正在测试的方法无关。

我的建议是,使用现有工具来做到这一点;阿列克谢的评论指出了你正确的方向。