我正在使用在 NCrunch 3.14.0.1 下运行的 FluentAssertions 5.3.0。当测试失败时,我经常看到这个错误,因为 FluentAssertions 尝试生成报告消息......
System.ArgumentOutOfRangeException:startIndex 不能大于字符串的长度。参数名称:FluentAssertions.CallerIdentifier.DetermineCallerIdentity() 处 FluentAssertions.CallerIdentifier.DetermineCallerIdentity() 处 FluentAssertions.CallerIdentifier.ExtractVariableNameFrom(StackFrame frame) 处 System.String.Substring(Int32 startIndex, Int32 长度) 处的 startIndex。 AssertionScope.FailWith(String message, Object[] args) at FluentAssertions.Numeric.NumericAssertions`1.Be(T expected, String because, Object[] becauseArgs) at TableTests.ConsolidatedMovementsTester.AlternativingMovementStatesAreRecognised() in ...test.cs
错误是零星的——如果重新运行测试,它通常会消失(在这种情况下,会显示正确的错误报告)。我在 FluentAssertions 和 NCrunch 的最后几个版本中看到了这一点,它出现在多台机器上(所有机器都运行某种 Visual Studio 2017 Professional)。
这是最近一个叫我咬我的例子……
results.Count(c => c.IsStationary).Should().Be(5);
其中results是 POCO 的 ImmutableArray
在这种情况下,右键单击失败的测试并在 ncrunch 窗口中选择“在新的测试运行器中重新运行”,导致测试重新运行并且 FA 发出正确的报告。
任何人都可以为此提出解决方法吗?