BDD, тестирует приемочные испытания?

Вам нужно что-то как Fitnesse, если Вы имеете BDD тесты?

45
задан Alex.K. 24 July 2019 в 17:52
поделиться

4 ответа

Я не знаю, существует ли, строго говоря, такая вещь, как «тест BDD». BDD - это философия, которая предлагает вам наилучшее взаимодействие и взаимодействие с заинтересованными сторонами для выполнения сложного проекта. Он не дает никаких указаний на лучший способ написания тестов. Другими словами, вы, вероятно, все еще будете иметь все обычные виды тестов (включая приемочные тесты) в рамках проекта философии BDD.

Когда вы слышите о «каркасах BDD», обычно под оратором подразумевается каркас для написания всех ваших обычные виды испытаний, но с поворотом BDD. Например, в RSpec вы все еще пишете модульные тесты; Вы просто добавляете к ним аромат BDD.

5
ответ дан 26 November 2019 в 20:55
поделиться

Хотя BDD шире, чем просто тесты, тесты BDD действительно существуют. Эти тесты представляют собой модульные тесты, соответствующие языку BDD.

Учитывая некоторый исходный контекст (данные), Когда происходит событие, затем обеспечьте некоторые результаты.

В зависимости от вашего предпочтительного языка доступно несколько хороших сред BDD. JBehave для Java RSpec для Ruby NBehave для .NET

2
ответ дан 26 November 2019 в 20:55
поделиться

Мне нравится проводить различие между «спецификациями» и «тестами».

Если я рассматриваю метод под названием GetAverage (IEnumerable numbers) , Я собираюсь написать более или менее стандартный модульный тест.

Если я рассматриваю метод под названием CalculateSalesTax (десятичная сумма, штат штата, муниципалитет) , я все равно буду писать модульный тест , но я назову это спецификацией, потому что я собираюсь изменить его (1), чтобы проверить поведение процедуры, и (2), потому что сам тест документирует как процедуру, так и ее критерии приемлемости.

Рассмотрим:

[TestFixture]
public class When_told_to_calculate_sales_tax_for_a_given_state_and_municipality() // the name defines the context
{
    // set up mocks and expected behaviour
    StateSalesTaxWebService stateService 
        = the_dependency<IStateSalesTaxWebService>;
    MunicipalSurchargesWebService municipalService 
        = the_dependency<IMunicipalSurchargesWebService>;

   stateService.Stub(x => x.GetTaxRate(State.Florida))
        .Return(0.6);
    municipalService.Stub(x => x.GetSurchargeRate(Municipality.OrangeCounty))
        .Return(0.05);

    // run what's being tested
    decimal result = new SalesTaxCalculator().CalculateSalesTax
        (10m, State.Florida, Municipality.OrangeCounty);

    // verify the expected behaviour (these are the specifications)
    [Test]
    public void should_check_the_state_sales_tax_rate()
    {
        stateService.was_told_to(x => x.GetTaxRate(State.Florida)); // extension methods wrap assertions
    }

    [Test]
    public void should_check_the_municipal_surcharge_rate()
    {
        municipalService.was_told_to(x => x.GetSurchargeRate(Municipality.OrangeCounty));
    }

    [Test]
    public void should_return_the_correct_sales_tax_amount()
    {
        result.should_be_equal_to(10.65m);
    }
}
2
ответ дан 26 November 2019 в 20:55
поделиться

JBehave (и NBehave недавно добавили такую ​​же поддержку) работают с обычными тестовыми файлами, поэтому, хотя многие другие фреймворки добавляют «тесты на вкус BDD», текстовые спецификации / примеры поведения, созданные с помощью JBehave, подходят для приемочные испытания. И нет, для этого вам не нужна фитнес.

Чтобы понять, как это работает, я предлагаю 2-минутное руководство по JBehaves .

2
ответ дан 26 November 2019 в 20:55
поделиться
Другие вопросы по тегам:

Похожие вопросы: