c# – 如何在运行带附加调试器的测试时阻止VerificationExceptio
每当我运行附加调试器的以下任一单元测试时,此时我在
FluentValidation代码中得到VerificationException(如果需要,将在稍后发布整个堆栈跟踪):
at FluentValidation.Resources.LocalizedStringSource.CreateFromExpression(Expression`1 expression,IResourceAccessorBuilder resourceProviderSelectionStrategy) in ...FluentValidationResourcesLocalizedStringSource.cs:line 66 测试是: using FluentValidation; using Microsoft.VisualStudio.TestTools.UnitTesting; [TestClass] public class UnitTest1 { [TestMethod] public void TestMethod1() { var c = new MyClass(); var v = new MyValidator(); v.Validate(c); } [TestMethod] public void TestMethod2() { Exception ex = null; var done = new ManualResetEvent(false); ThreadPool.QueueUserWorkItem( o => { try { TestMethod1(); } catch (Exception e) { ex = e; } finally { done.Set(); } }); done.WaitOne(); Assert.IsNull(ex); } } public class MyValidator : AbstractValidator<MyClass> { public MyValidator() { RuleFor(c => c.MyProperty).GreaterThan(0); } } public class MyClass { public int MyProperty { get; set; } } 我在单一解决方案,单项目场景中引用了这些程序集,目标是4.0.30319运行时: > FluentValidation v3.0.0.0 其他一些观点: >没有调试器运行测试工作正常 有谁知道如何防止这种VerificationException,解决它,和/或它为什么会被造成?似乎有这么少的装配,不应该有任何冲突的装载.我还将FluentValidation卫星程序集移开了,但仍然得到了异常. 解决方法
好的,我知道了.首先,我要感谢0700
Skinner
working with me重现问题.他的帮助促使我尝试进一步调整我的环境.
要防止出现此问题,您必须在Visual Studio 2010 Ultimate中禁用IntelliTrace,或者必须将FluentValidation添加到IntelliTrace应从收集数据中排除的模块列表中.我的网络搜索似乎表明它是一个IntelliTrace错误. blog post在blog post中说:
我查看了我的堆栈跟踪并简要介绍了FluentValidation源代码,但没有看到这一点.我怀疑它可能是与LINQ表达式相关的类似IntelliTrace检测错误. 无论如何,这是如何解决问题: >在VS中,选择Debug |选项和设置… | IntelliTrace |模块>在以下对话框中,单击“添加…”,然后在文本框中输入FluentValidation. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |