c# - 使 Contract.Assert 抛出异常而不是显示对话框

标签 c# assert code-contracts

如果我使用新的代码契约 Contract.Assert 方法,是否可以让它抛出异常而不是显示对话框?我想在构建机器上运行单元测试时执行此操作。

最佳答案

多亏了这个post on MSDN forums我找到了可能的解决方案。

namespace QuickGraph.Tests  
{  
    [TestClass]  
    public class AssemblyContextTest  
    {  
        [AssemblyInitialize]  
        public static void Initialize(TestContext ctx)  
        {  
            // avoid contract violation kill the process  
            Contract.ContractFailed += new EventHandler<ContractFailedEventArgs>(Contract_ContractFailed);  
        }  

        static void Contract_ContractFailed(object sender, System.Diagnostics.Contracts.ContractFailedEventArgs e)  
        {  
            e.SetHandled();  
            Assert.Fail("{0}: {1} {2}", e.FailureKind, e.Message, e.Condition);  
        }  
    }  
}  

这似乎有效。

关于c# - 使 Contract.Assert 抛出异常而不是显示对话框,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6464136/

相关文章:

c# - arraylist 的顺序在 C#.NET 中得到保证吗?

javascript - 诸如 Chai 之类的断言库如何在不强制调用函数的情况下工作?

c# - 捕获的 .NET 异常意外为空

c# - Pex 和代码契约(Contract)

scala - 当我们有代码契约/静态分析时,为什么我们需要 Option 类型?

c# - 如何中断应用程序中文本语音合成的播放?

C#:资源文件重构

python - 如何验证文本字段是否具有我输入的值?

c - 在 C 中一起使用 strlen 和断言

c# - 如何通过图钉在 Windows Phone 8.1 map 上调整缩放级别