Конструктор - это просто структура, предоставляемая языком. Кажется, что каждая тестовая среда имеет свой собственный контролируемый жизненный цикл «инициализация». Вероятно, у вас будут проблемы только при использовании конструктора для изменения ваших местных жителей.
MSTest: Вы получаете новый экземпляр класса тестирования для каждого TestMethod
. Это может быть единственным случаем, когда нормально изменять локальные значения в конструкторе, инициализаторе или методе тестирования и не влиять на другие методы тестирования.
public class TestsForWhatever
{
public TestsForWhatever()
{
// You get one of these per test method, yay!
}
[TestInitialize]
public void Initialize()
{
// and one of these too!
}
[TestMethod]
public void AssertItDoesSomething() { }
[TestMethod]
public void AssertItDoesSomethingElse() { }
}
MSpec: Вы получаете только один Establish
и Because
для всех ваших утверждений (It
). Таким образом, не мутируйте своих местных жителей в своих утверждениях. И не зависит от мутаций местных жителей в базовых контекстах (если вы их используете).
[Subject(typeof(Whatever))]
public class When_doing_whatever
{
Establish context = () =>
{
// one of these for all your Its
};
Because of = () => _subject.DoWhatever();
It should_do_something;
It should_do_something_else;
}