我在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发出正确的报告。
有人可以为此建议解决方法吗?