Я использую MSpec для написания модульных тестов и действительно предпочитаю стиль BDD, я думаю, что это намного более читаемо. Я теперь использую Silverlight, который MSpec не поддерживает, поэтому мне нужно использовать MSTest, но мне все равно нравится поддерживать стиль BDD, поэтому я пытаюсь найти способ сделать это.
Просто, чтобы объяснить, что я пытаюсь добиться, вот как я напишу тест MSpec
[Subject(typeof(Calculator))]
public class when_I_add_two_numbers : with_calculator
{
Establish context = () => this.Calculator = new Calculator();
Because I_add_2_and_4 = () => this.Calculator.Add(2).Add(4);
It should_display_6 = () => this.Calculator.Result.ShouldEqual(6);
}
public class with_calculator
{
protected static Calculator;
}
Итак, с MSTest я бы попытался написать тест вроде этого (хотя вы можете видеть, что это не сработает, потому что я добавил два атрибута TestInitialize, но вы получите то, что я пытаюсь сделать.)
[TestClass]
public class when_I_add_two_numbers : with_calculator
{
[TestInitialize]
public void GivenIHaveACalculator()
{
this.Calculator = new Calculator();
}
[TestInitialize]
public void WhenIAdd2And4()
{
this.Calculator.Add(2).Add(4);
}
[TestMethod]
public void ThenItShouldDisplay6()
{
this.Calculator.Result.ShouldEqual(6);
}
}
public class with_calculator
{
protected Calculator Calculator {get;set;}
}
Может ли кто-нибудь придумать несколько более элегантных предложений, чтобы написать тесты таким образом с помощью MSTest?