Как написать модульные тесты в стиле контекста / спецификации с помощью платформы MSTest / xUnit?

Я использую MSpec для написания своих модульных тестов и действительно предпочитаю стиль BDD, я думаю, что это намного больше удобочитаемый. Сейчас я использую Silverlight, который MSpec не поддерживает, поэтому мне приходится использовать MSTest, но я все еще хотел бы сохранить стиль BDD, поэтому я пытаюсь найти способ сделать это.

Просто чтобы объяснить, что я ' Я пытаюсь добиться успеха, вот как я d написать тест 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 я бы попытался написать такой тест (хотя вы можете видеть, что это не сработает, потому что я ввел 2 атрибута 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?

23
задан John Zabroski 20 September 2018 в 13:18
поделиться