我在WinMergeReporter中使用批准测试已经有一段时间了,它与标准NUnit运行程序可执行文件配合得很好。
我正在试用NCrunch和批准。验证新审批失败(如预期)。
但是,WinMerge不会启动。
我得到了失败的
ApprovalTests.Core.Exceptions.ApprovalMissingException:审批失败:找不到审批文件"…\mytest.approved.txt"。在ApprovalTests.Approvers.FileApprover.Fail()
我可以在NUnit运行程序中运行相同的代码,WinMerge就会启动。
NCrunch推出WinMergeReporter的秘诀是什么?
这实际上是经过设计的,因为每次NCrunch失败时都会弹出winmerge,这很快就会变得非常烦人。尤其是当它抢镜的时候。
然而,以下是它工作的原因以及如何改变它,如果你愿意的话(你总是可以把它改回来)
批准测试有一个MultiReporter系统,它使用来自组件的前端负载来实现GangOfFour"责任链"模式。它的行为就像有一个
[assembly: FrontLoadedReporter(typeof(NCrunchReporter))]
这实际上并不一定要存在。如果不存在任何实际情况,批准测试将假定它为默认值。
所以,如果你想关闭它,你可以做
[assembly: FrontLoadedReporter(typeof(AlwaysFaillingReporter))]
除了那个记者不存在(尽管制作一个记者是微不足道的:-)所以你可能只想做
[assembly: FrontLoadedReporter(typeof(WinMergeReporter))]
测试愉快!