Le constructeur est juste une structure fournie par le langage. Chaque cadre de test semble avoir son propre cycle de vie contrôlé "initialize". Vous n'aurez probablement des problèmes qu'en utilisant le constructeur pour muter vos locals.
MSTest : Vous obtenez une toute nouvelle instance de la classe de test pour chaque TestMethod
. Il s'agit peut-être du seul cas où il est possible de modifier les paramètres locaux dans le constructeur, l'initialisateur ou la méthode de test sans affecter les autres méthodes de test.
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 : Vous n'en avez qu'un seul. Establish
y Because
pour toutes vos affirmations ( It
). Donc, ne mutez pas vos locaux dans vos assertions. Et ne dépendez pas des mutations des locales dans les contextes de base (si vous les utilisez).
[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;
}