Использование стиля тестов BDD - PullRequest
1 голос
/ 05 июля 2010

При использовании BDD для более высокого уровня тестов, этот язык в тестах - учитывая, когда кажется легким для понимания. Я использую C #. Поэтому я называю класс «whenthishappens», настройка - это"дано", и тогда у меня есть тесты. Но как использовать этот стиль BDD при написании тестов для метода класса. Или я должен иметь только тесты с именем "shouldDoXXX".?

Ответы [ 4 ]

2 голосов
/ 07 июля 2010

Обычно я называю свои тесты shouldDoXXXX, где имя теста описывает, что оно должно делать для всех подобных контекстов.Так что я мог бы сказать shouldAddUpTwoNumbersCorrectly.Это немного отличается от того, как это делают многие BDDers - толпе Ruby особенно нравится shouldAddTwoPlusTwoToMakeFour, поэтому повторяем конкретный пример, который они используют.Что бы ни работало для вас!

Внутри теста я часто пишу комментарии как "Дано / Когда / Затем":

public void ShouldAddUpTwoNumbersCorrectly() 
{
    // Given two numbers
    // When I give them to the summer
    // Then the result should be the sum of the two numbers
}

Затем я заполняю код между комментариями.Если тест очень прост, я могу пропустить комментарии.

Я не беспокоюсь о читаемых на английском языке фреймворках для тестирования класса, потому что аудитория техническая и способна читать код.Платформы BDD, которые делают «Дано / Когда / Тогда», были созданы в основном для того, чтобы помочь в общении с нетехническими заинтересованными сторонами и чтобы поощрить разработчиков использовать их язык.Я не считаю их полезными на уровне класса.YMMV.

2 голосов
/ 05 июля 2010

Вот блог, который я написал о тестах в стиле BDD для кода на основе MSTest:

http://mrclyfar.blogspot.com/2010/02/amazing-mapping-demo-at-ted-2010.html. Я использовал идеи из этого блога поста.

Лично я использую StoryQ для своих тестов. StoryQ - это среда тестирования, похожая на MSpec и SpecFlow, в которой вы можете написать свои тесты более наглядным способом. Сначала я пытался использовать BDD-именование для кода стиля MSTest, но я обнаружил, что он менее гибок, чем хотелось бы. Затем я поэкспериментировал с MSpec, и это здорово.

В конце концов, я выбрал StoryQ, так как в нем было немного больше многословия, которое мне нравится. Облегчает мне написание описательных тестов без использования наследования контекста.

1 голос
/ 13 июня 2014

Эта среда C # делает именно то, что вам нужно, и позволяет вам запускать имена методов тестирования с IWantTo

public void IWantTo...()

Это открытый исходный код, найденный по адресу

Преобразует это ...

[Test]
public void IWantToRegisterANewUser()
{
  ICustomer customer = new Customer();

  SoThat(MyBusinessValue.IncreaseCustomerBase)
    .As(new User())
    .Given(customer.Register)
    .When(customer.Confirm_Registration)
    .Then(customer.Login);
}

к этому ...

I want to register a new user
  So that Increase customer base
       As user
    Given Register customer
     When Confirm customer registration
     Then Login customer
0 голосов
/ 02 июля 2018

Вы также можете взглянуть на BDD для C # NUnit . Альтернативным способом может быть использование некоторых библиотек C #, которые помогают писать BDD-подобные модульные тесты с читаемыми описаниями.

...