我有一个方法接受参数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))]在单元测试用例中失败。 但是实际的代码会根据输入抛出适当的异常,从而正确响应。
预先感谢
答案 0 :(得分:0)
通常,您可以编写两个不同的测试,一个用于文件大小写,另一个用于目录大小写。
无论如何,此代码很可能不会像您期望的那样运行。如果文件或目录位于sourceFileorFolder
路径中,则您发布的代码段将始终抛出。
如果路径以文件形式存在,则抛出DirectoryNotFoundException
,否则抛出FileNotFoundException
。仅当文件不存在时,您才继续进行而不抛出。
编辑:我错过了大!
语句中的if
。实际上,此方法永远不会抛出异常,因为仅当文件不存在时输入第一个if
语句(不((文件夹和非文件)或(文件而不是文件夹)是与不是(文件或文件夹))相同。较小的if
语句的行为与我上面所写的相同。
答案 1 :(得分:0)
无需复杂,删除条件为上的
Boolean isSourceExist = Directory.Exists(sourceFileorFolder);
Boolean isFileExist = File.Exists(sourceFileorFolder);
if (isSourceExist == false)
throw new DirectoryNotFoundException();
else if (isFileExist == false)
throw new FileNotFoundException();