断言失败时,FluentAssertions抛出ArgumentOutOfRangeException(可能与NCrunch相关)

时间:2018-05-01 17:12:50

标签: fluent-assertions ncrunch

我在NCrunch 3.14.0.1下运行FluentAssertions 5.3.0。当测试失败时,我经常看到此错误,因为FluentAssertions尝试生成报告消息...

  

System.ArgumentOutOfRangeException:startIndex不能大于   字符串的长度。参数名称:startIndex at   System.String.Substring(Int32 startIndex,Int32 length)at   FluentAssertions.CallerIdentifier.ExtractVariableNameFrom(的StackFrame   框架)   FluentAssertions.CallerIdentifier.DetermineCallerIdentity()at   FluentAssertions.Execution.AssertionScope.GetIdentifier()at   FluentAssertions.Execution.AssertionScope.FailWith(String message,   对象[] args)在FluentAssertions.Numeric.NumericAssertions`1.Be(T   预期,String因为,Object []因为Args)而在   TableTests.ConsolidatedMovementsTester.AlternativingMovementStatesAreRecognised()   在... test.cs

错误是偶发的 - 如果重新运行测试,它通常会消失(在这种情况下,会显示正确的错误报告)。我已经在FluentAssertions和NCrunch的最后几个版本中看到过它,它出现在多台机器上(都运行着一些Visual Studio 2017 Professional)。

这是最近一次咬我的电话的例子......

var object = { 'a': [{ 'b': { 'c': 3 } }] };

_.get(object, 'a[0].b.c');
// => 3

_.get(object, ['a', '0', 'b', 'c']);
// => 3

_.get(object, 'a.b.c', 'default');
// => 'default'

其中结果是POCOs的ImmutableArray

在这种情况下,右键单击失败的测试并在ncrunch窗口中选择“在新的测试运行器中重新运行”,导致测试重新运行,FA发出正确的报告。

有人可以为此建议解决方法吗?

0 个答案:

没有答案