我正在使用 Visual Studio 2013 Ultimate ,暂时没有机会升级到 Visual Studio 2015 。
我正在寻找一种方法来确定目标成员可以抛出的所有可能的异常,因此研究我听说 Microsoft Pex 这是VS2008 / VS2010的IDE扩展,它尝试确定"所有"目标成员可能抛出的可能异常:
我不确定它的逻辑或它是如何工作的,因为我无法为我的Visual Studio版本安装它,它是一个MSI包,一旦解压缩,似乎它没有 vsixmanifest 文件使 the known trick 让工作成为较新的Visual Studio版本的扩展。
顺便说一下,微软公开说 PEX 被名为 IntelliTest 的 Visual Studio 2015 的功能所取代
新:Visual Studio 2015中的IntelliTest是Pex的演变。 IntelliTest是Visual Studio Enterprise 2015中集成的功能。 IntelliTest与Fakes一起工作。
但是我不这么认为,因为我听到的评论中的PEX似乎是一个小工具,具有与确定可能的异常相关的独特目的(例如评论 here ), IntelliTest 似乎是一个全功能的单元测试包,我对此不感兴趣,我只想检查目标成员的可能异常。
因此,在我的研究之后,我还发现了RedGate的 ExceptionHunter :
但它在2010年成为停产的软件,因为出现了.Net framework 2.0之后的技术原因,并且RedGates不再在他们的网站上提供这个有用软件的下载URL,我找不到这个软件。
所以,今天在.Net开发中,程序员可以做些什么来自动确定"所有"目标成员可以抛出的可能异常?
请注意,我并不是在寻找像 Nunit 这样的完整单元测试功能,因为这些类型的软件包符合我不需要的许多功能,但如果是一个单元这样的测试包提供了一种确定成员所有异常的简单方法,然后我可以接受建议。
答案 0 :(得分:1)
对我来说,这似乎很难。你必须先知道一个方法的内部工作,然后才能知道它可以抛出什么异常,或者你必须依赖于那些在确定预期的异常时总是那么可靠的文档(尽管微软做得不错)
您无法检查许多常见异常,例如OutOfMemoryException
。 StackOverflowException
,DivideByZeroException
和NullReferenceException
似乎更容易做,但这需要分析代码并将其分解为逻辑。