更灵活Assert.ThrowsException?

More flexible Assert.ThrowsException?

MSTest 现在允许您测试某段代码是否抛出某种异常类型,通过:

Assert.ThrowsException<MyException>(() => foo.Bar());

但是,我需要更灵活的异常测试;我不仅需要测试异常的类型,还需要检查它的消息是否以某个字符串开头(而不是匹配确切的异常字符串)。有没有办法用 MSTest 做到这一点?如果没有,我最好的方法是什么?有没有其他测试框架可以更好地处理这个问题?

理想情况下,Assert 会接受第二个传入异常的函数,这个函数可以根据需要测试异常,return true 或 false 表示断言成功或失败.

var ex = Assert.ThrowsException<MyException>(() => foo.Bar());
Assert.IsTrue(ex.Message.StartsWith("prefix"));