【问题标题】:Why does the ReSharper 8 test runner crash on this spec?为什么 ReSharper 8 测试运行器会在此规范上崩溃?
【发布时间】:2013-12-24 00:08:14
【问题描述】:

我有一组使用 MSpec 运行的测试。前两个运行正常,但是当我包含第三个测试时,测试运行器在运行任何测试之前崩溃并出现 NullReferenceException:

Because of = () => _result = Subject.GetReport(fooReportType);

It should_return_a_success = () => _result.Successful.ShouldBeTrue();
It should_return_something = () => _result.Data.ShouldNotBeNull();

// this test crashes
It should_return_a_concrete = _result.Data.ShouldBeOfType<IReportBase<BarChart>>;

我在跑步:

  • VS 2013 RC
  • ReSharper 版本 8.0.2000.2660
  • Machine.Specifications 0.5.16(根据 NuGet)

我尝试将ShouldBeOfType 中的类型替换为ReportBase&lt;BarChart&gt;, 接口的实现以及ReportBase&lt;BarChart&gt;, 的具体扩展,结果都相同。

【问题讨论】:

  • 你是从你的编辑器那里复制过来的,还是你可能输入错误?您缺少正确的委托分配 = () =&gt;ShouldBeOfType&lt;T&gt;() 末尾的方法调用括号
  • 而且,抱歉,我应该在我的编辑中解释,但我取消了测试的注释,以便它可以很好地着色(更容易捕捉到错误的格式)。
  • Anthony,我正在支持你的评论,尽管它对除我之外的任何人都没有用。你是对的!伙计,我们有几个人看过,但我们对测试跑步者明显的崩溃感到困惑。 Dopeslaps 对我来说。 :-)
  • 我想出了一个办法让它成为答案并抱怨一般的 resharper ;)

标签: c# resharper mspec


【解决方案1】:

您必须小心使用 ReSharper,尤其是在调用测试运行程序时。它并不总是运行编译器,即使它运行,它也可以使用一些愚蠢的、过时的卷影副本。你会想要仔细检查你的语法......

It should_return_a_concrete = _result.Data.ShouldBeOfType<IReportBase<BarChart>>;

您缺少委托分配= () =&gt;,以及ShouldBeOfType&lt;T&gt;() 末尾的方法调用括号。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-08-12
    • 2017-03-27
    • 2023-03-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多