在MSTests中可以捕获任何异常吗?

时间:2010-02-02 15:33:20

标签: unit-testing mstest

我试图避免一个脆弱的测试。我想声明一个方法在传入无效数据时抛出异常,而我不关心哪一个。

以String.IsNullOrEmpty为例,如果字符串为空,您不想抛出空引用异常吗?如果它为null,我想你可以抛出一个argumentException。我不认为对于null和empty有一个单独的保护条款是一个好主意,并且无论我是否愿意断言我的单位抛出异常。

使用[ExpectedException(typeof(Exception))]会出现错误,指出异常类型必须从异常继承。如果没有抛出异常,我的解决方案是带有Assert.Fail的try / catch块。有更好/更清洁的方式吗?

1 个答案:

答案 0 :(得分:1)

看起来try-catch是断言抛出泛型异常的唯一选择。这是MSDN关于这个主题的一个主题:

http://social.msdn.microsoft.com/Forums/en/vststest/thread/ed891a27-272c-4938-9a93-719c149d820e

我仍然会质疑是否需要对通用异常进行断言。如果要测试特定方案,则应该知道应该抛出什么异常。对于使用string.IsNullOrEmpty()的示例,您似乎希望测试空字符串和空值。如果空字符串输入无效,则抛出ArgumentException似乎是合理的,您可以针对特定异常进行测试。如果字符串是有效输入,那么您可以进行测试以确保它不会抛出异常。