C# 更灵活的Assert.ThrowsException?

C# 更灵活的Assert.ThrowsException?,c#,unit-testing,mstest,assert,vs-unit-testing-framework,C#,Unit Testing,Mstest,Assert,Vs Unit Testing Framework,MSTest现在允许您通过以下方式测试某段代码是否抛出某个异常类型: Assert.ThrowsException<MyException>(() => foo.Bar()); Assert.ThrowsException(()=>foo.Bar()); 然而,我需要一个更灵活的异常测试;我不仅需要测试异常的类型,还需要检查其消息是否以某个字符串开头(而不是与确切的异常字符串匹配)。有没有一种方法可以用MSTest实现这一点?如果没有,我最好的方法是什么?是否有另一个测试框

MSTest现在允许您通过以下方式测试某段代码是否抛出某个异常类型:

Assert.ThrowsException<MyException>(() => foo.Bar());
Assert.ThrowsException(()=>foo.Bar());
然而,我需要一个更灵活的异常测试;我不仅需要测试异常的类型,还需要检查其消息是否以某个字符串开头(而不是与确切的异常字符串匹配)。有没有一种方法可以用MSTest实现这一点?如果没有,我最好的方法是什么?是否有另一个测试框架可以更好地处理这个问题

理想情况下,Assert将接收在抛出的异常中传递的第二个func,该func可以根据需要测试异常,并返回true或false以指示Assert已成功或失败。

var ex=Assert.ThrowsException(()=>foo.Bar());
var ex = Assert.ThrowsException<MyException>(() => foo.Bar());
Assert.IsTrue(ex.Message.StartsWith("prefix"));
Assert.IsTrue(例如Message.StartsWith(“前缀”);
var ex=Assert.ThrowsException(()=>foo.Bar());
Assert.IsTrue(例如Message.StartsWith(“前缀”);