我的自定义约束收集有关预期值和实际值的消息。它们通过覆盖“WriteDescriptionTo”写入“MessageWriter”:
public override void WriteDescriptionTo(MessageWriter writer)
{
writer.WriteExpectedValue(_expectedMessages);
writer.WriteActualValue(_actualMessages);
}
但是在测试结果中所有信息都在预期结果中:
Expected: < On item 2 expected: Expected Reversible: True <> On item 2 actual: Actual Reversible: False > But was: <UNSET>
注意:我在此处格式化文本失败,它拒绝使用尊重我的换行符。所以这是结果文本的屏幕截图:
“但是是:”部分仍然是
那么如何将实际文本放到正确的位置呢?
这不是什么大问题,只是真的很烦人,我似乎使用了正确的方法,但它不起作用,甚至看起来像是 nunit 中的一个错误。
最佳答案
好的,我检查了 NUnit 的源代码。 实际 行总是 由框架生成,无论您之前是否调用过WriteActualValue
。
相反,您应该将自定义约束(继承自 Constraint
)的 actual
字段设置为您的 _actualMessages
内容(或者重构您的代码在没有 _actualMessages
的情况下生活)。这应该会带来您预期的输出。
关于c# - 如何使用 nunit 约束获得格式正确的测试结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23747459/