我有一段代码,我需要为它编写一个测试方法。
例如:有一个打开文件的 Open 方法。但是里面没有抛出 FileNotFOundException 的代码。如果我输入错误的文件名,它将产生 COMException。现在我应该测试捕获 COMException,还是应该测试捕获 FileNotFoundException?当然测试会失败。我不明白如何在这个方向上构建测试。测试驱动开发看起来很符合逻辑,但如何反过来呢?
我有一段代码,我需要为它编写一个测试方法。
例如:有一个打开文件的 Open 方法。但是里面没有抛出 FileNotFOundException 的代码。如果我输入错误的文件名,它将产生 COMException。现在我应该测试捕获 COMException,还是应该测试捕获 FileNotFoundException?当然测试会失败。我不明白如何在这个方向上构建测试。测试驱动开发看起来很符合逻辑,但如何反过来呢?
我认为您不应该为您拥有的代码定制测试 - 我认为您应该针对您所需的用例进行测试。你的代码应该在什么条件下成功,在什么条件下它应该失败,它应该做什么。一旦你知道了这些,然后编写测试代码并运行你的单元测试。
在您所说的示例中-如果文件将始终存在,那么我认为没有理由检查未找到的文件,但是如果文件有时无法出现-应该发生什么(不要看代码-看在要求处),并编写一个测试来验证这确实发生了。
当然,您可能会发现代码未能通过涵盖其用例的许多测试 - 然后您可以在此处管理差异。
我会说你应该测试两者,看看你是否能以某种方式改变代码以返回 FileNotFoundException。