我想知道AssertFailedException是否有什么特别之处?是否需要为失败的单元测试抛出该异常,还是可以抛出任何异常?如果我抛出任何其他异常,或者测试引擎以任何其他方式运行,会不会起作用?我的意思是,AssertFailedException与其他例外是否有不同的对待? 最佳答案 好的,答案是肯定的。我做了一些测试,发现AssertFailedException被不同地对待,这是非常邪恶的。AssertFailedException隐藏内部异常中的整个堆栈跟踪和所有消息,并仅输出其自身的消息。是否设置innter异常都没有关系。它不会显示。这是您看到的strck跟踪: 引发了类型为'UnitTestDemo.MyException'的异常。在 C:[...] \ Validations.cs:第41行的UnitTestDemo.Foo(String bar) C:[...] \ ValidationTests.cs:line 29中的UnitTestDemo.IsNullOrEmpty()这是当您使用内部异常引发自定义异常时得到的结果: 测试方法UnitTestDemo.IsNullOrEmptyPasses引发异常: UnitTestDemo.ValidationException:类型的异常 引发了“ UnitTestDemo.ValidationException”,但没有一个 预期。 ---> UnitTestDemo.ValidationException:'bar'必须为null或 空的。 在UnitTestDemo.Validation'1.Throw [TException](Func'2 getMessage)在C:[...] \ ValidationHelper.cs:第25行 UnitTestDemo.IsNullOrEmpty(ValidationContext'1 context,Func'2 C:[...] \ Validations.cs:第42行的getMessage) UnitTestDemo.ValidationTests。 c.b__2_0()在 C:[...] \ ValidationTests.cs:第29行位于 的UnitTestDemo.DoesNotThrow(ValidationContext`1 context)在 C:[...] \ Validations.cs:第36行---内部异常堆栈的结尾 跟踪- 在C:[...] \ Validations.cs:第40行的UnitTestDemo.DoesNotThrow(ValidationContext'1 context)中 C:[...] \ ValidationTests.cs:line中的UnitTestDemo.IsNullOrEmptyPasses() 29您不仅可以看到测试中的消息,还可以看到内部异常和完整的堆栈跟踪信息。关于c# - AssertFailedException在单元测试中是否有任何特殊处理?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/37901652/ 10-09 09:30