【问题标题】:MSpec Establish delegateMSpec 建立委托
【发布时间】:2014-11-07 20:21:10
【问题描述】:

根据 MSpec 文档here,Establish 应该只运行一次。但是,当我调试时,每个 It 委托都会运行一次建立。这是一个简单的例子:

public class TestExample
{
        Establish arrange = () =>
        {
            a = 5;
        };
        Because of = () => a = a * 2;
        It should_be1 = () => a.ShouldEqual(10);
        It should_be2 = () => a.ShouldBeGreaterThan(9);
        It should_be3 = () => a.ShouldBeLessThan(90);
        private static int a;
}

是否应该为每个 It 委托运行一次?还是每班一次?

【问题讨论】:

标签: mspec


【解决方案1】:

每个上下文(类)一次 - 除非它有一个基类,在这种情况下,基类的建立首先执行(递归,与类继承树一样深)。

您如何确定它正在执行多次?

对于它的价值,我无法使用 MSpec 0.9.0、ReSharper 运行器和问题中的确切代码重现此行为。正如预期的那样,所有的规范都执行,Establish 执行一次。

撒几个Console.WriteLine()如下:

using System;
using Machine.Specifications;

namespace StackOverflow_26809460
    {
    public class TestExample
        {
        static int a;

        Establish arrange = () =>
            {
            a = 5;
            Console.WriteLine("Establish");
            };

        Because of = () => a = a*2;

        It should_be1 = () =>
            {
            a.ShouldEqual(10);
            Console.WriteLine("should_be1");
            };

        It should_be2 = () =>
            {
            a.ShouldBeGreaterThan(9);
            Console.WriteLine("should_be1");
            };

        It should_be3 = () =>
            {
            a.ShouldBeLessThan(90);
            Console.WriteLine("should_be1");
            };
        }
    }

当我在命令行运行程序中运行它时,我得到:

StackOverflow_26809460 中的规格: 测试示例 建立 应该是1 » 应该是1 应该是1 » 应该是2 应该是1 » 应该是3 上下文:1,规格:3,时间:0.53 秒 C:\Users\Tim\Projects\StackOverflow\StackOverflow_26809460\bin\Debug>

对我来说这似乎是一个跑步者的问题......

【讨论】:

  • 我有一个断点,并且正在多次执行建立。此外,如果有 Cleanup 委托,它也会被执行多次。
  • 您使用的是哪个版本?如果您认为这是一个错误,请在 GitHub 上报告它,以及使用的版本和运行程序。
  • @Tim Andy 和我怎么会看到它运行多次而不是你?我正在使用 this 跑步者,但我怀疑它与跑步者有什么关系。
  • VS 测试适配器尚未更新到 0.9.0。我将尝试针对该回购发送 PR。您是否将 0.9.0 与适配器结合使用?
  • @DanielMarbach 是的,我是。所以你是说这是跑步者的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-31
  • 2011-05-09
  • 2011-05-27
  • 2011-01-12
  • 1970-01-01
相关资源
最近更新 更多