Это один раз для контекста (класса) - если только он не имеет базового класса, в этом случае базовый класс запускается сначала (рекурсивно, так же глубоко, как дерево наследования класса).
Как вы определяете, что он выполняется несколько раз?
Для чего это стоит, я не могу воспроизвести это поведение, используя MSpec 0.9.0, бегун ReSharper и точный код из вопроса. Все спецификации выполняются, и набор выполняется один раз, как и ожидалось.
Опрыскивание несколько 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");
};
}
}
Когда я бегу, что в командной строке бегуна, я получаю:
Specs in StackOverflow_26809460:
TestExample
Establish
should_be1
» should be1
should_be1
» should be2
should_be1
» should be3
Contexts: 1, Specifications: 3, Time: 0.53 seconds
C:\Users\Tim\Projects\StackOverflow\StackOverflow_26809460\bin\Debug>
Это выглядит как вопрос бегун мне ...
Я не могу воспроизвести код выше, но код в этом вопросе видит, что sharedContext работает дважды. http://stackoverflow.com/questions/32010702/inheritied-establish-executed-multiple-times – Andy