デバッガーを接続して次の単体テストのいずれかを実行すると、この時点でVerificationException
内部のFluentValidationコードが取得されます(必要に応じて、後でスタックトレース全体を投稿します)。
at FluentValidation.Resources.LocalizedStringSource.CreateFromExpression(Expression`1 expression, IResourceAccessorBuilder resourceProviderSelectionStrategy)
in ...\FluentValidation\Resources\LocalizedStringSource.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
- Microsoft.VisualStudio.QualityTools.UnitTestFramework v10.0.0.0
- システム
- System.Core
他のいくつかのポイント:
- デバッガーなしでテストを実行すると正常に機能します
- コードカバレッジがオフになっている
- 参照されるアセンブリを最小限に最小化しました
- Fusionログにエラーは表示されません
SecurityRulesAttribute
答えから同様の質問に適用してみました- 私はVerificationExceptionとテストに関するブログ投稿からいくつかのことを試しました
- MSTestホストとResharperホストの両方で発生します(共通のスレッドは「デバッガーの下」にあるように見えるため、NUnitを試していません。
- 管理者または非管理者としてVSを実行しているときに発生します
誰かが私がこれを防ぐ方法、それを回避する方法VerificationException
、および/またはそれが引き起こされている理由を知っていますか?アセンブリが非常に少ないように思われるので、競合するアセンブリがロードされてはなりません。また、FluentValidation衛星アセンブリを邪魔にならない場所に移動しましたが、それでも例外が発生します。