我想知道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