繁体   English   中英

在单元测试用例中捕获引发的异常的问题

[英]Issue in catching the thrown exception in Unit Test Case

我有一个采用参数Source Folder / Source File的方法。我已经以某种方式处理代码,如果Source Folder或Source File不存在,它将相应地抛出DirectoryNotFound Exception或FileNotFound Exception。 以下是代码段

          Boolean isSourceExist = Directory.Exists(sourceFileorFolder);
          Boolean isFileExist = File.Exists(sourceFileorFolder);
            if (!(
                ((isSourceExist == true) && (isFileExist == false)) ||
                ((isSourceExist == false) && (isFileExist == true))
               ))
            {
                if (isSourceExist == false)
                    throw new DirectoryNotFoundException();
                else if (isFileExist == false)
                    throw new FileNotFoundException();
            }

尝试对否定方案(例如,提供一个不存在的文件夹)对该方法进行单元测试时,[ExpectedException(typeof(DirectoryNotFoundException))]在单元测试案例中失败。 但是实际代码会根据输入抛出适当的异常,从而正确响应。

提前致谢

通常,您可以编写两个不同的测试,一个用于文件大小写,另一个用于目录大小写。

无论如何,此代码很可能不会像您期望的那样运行。 如果在sourceFileorFolder路径上存在文件或目录,则您发布的代码片段将始终抛出。

如果路径以文件形式存在,则抛出DirectoryNotFoundException ,否则抛出FileNotFoundException 仅当文件不存在时,您才继续进行而不抛出。

编辑:我错过了! 在大if语句中。 实际上,此方法永远不会抛出异常,因为只有在文件不存在时才输入第一个if语句( 不((文件夹和非文件)或(文件而不是文件夹))不(文件或文件夹)相同 )。 如我上面所写,较小的if语句的行为。

无需复杂,去除上层的情况

Boolean isSourceExist = Directory.Exists(sourceFileorFolder);
Boolean isFileExist = File.Exists(sourceFileorFolder);

if (isSourceExist == false)
     throw new DirectoryNotFoundException();
else if (isFileExist == false)
     throw new FileNotFoundException();

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM