NBehave
Библиотека для .NET, которая реализует концепцию behavior-driven development (BDD), которая по сути являеться надстройкой над test-driven development (TDD), с хорошо всем знакомым NUnit во главе.
Рано или поздно всем разработчикам приходиться писать \ менять unit тесты. Как правило, спустя месяц / год разработчик уже не помнит какой тест, что проверяет и как он это делает. Ещё хуже, если сотни тестов достаються Вам в наследство, даже понять, что именно проверяет тест не всегда просто. А если над проектом работает команда аналитиков которые хотят проверить работу логики, но при этом не знают языка программирования?
И тут на белом коне появляеться NBehave, его задача — облегчить сопровождение и поддержку unit тестов и предоставить «не программистам» возможность протестировать логику.
Смотрим пример:
В результате теста мы получим следующий output:
Написание Story сводиться к:
Ну и о минусах библиотеки, из личного опыта:
В первый раз пришлось познакомиться с ней, когда она была ещё весьма сырой.
К синтаксису достаточно сложно привыкнуть и часто надо смотреть в примеры.
В текущей версии добавили альтернативно-упрощённый подход к написанию Story, хотя я его на практике ещё не проверял.
Добавляет работы программистам.
0.4 билд удалось запустить только с SVN репозитория, 0.3 работал с инсталяшки.
Нет нормальной документации, во всём надо разбираться самому =(
Ссылка на пример на 0.3 — grabbagoft.blogspot.com/2007/09/authoring-stories-with-nbehave-03.html
Библиотека для .NET, которая реализует концепцию behavior-driven development (BDD), которая по сути являеться надстройкой над test-driven development (TDD), с хорошо всем знакомым NUnit во главе.
Рано или поздно всем разработчикам приходиться писать \ менять unit тесты. Как правило, спустя месяц / год разработчик уже не помнит какой тест, что проверяет и как он это делает. Ещё хуже, если сотни тестов достаються Вам в наследство, даже понять, что именно проверяет тест не всегда просто. А если над проектом работает команда аналитиков которые хотят проверить работу логики, но при этом не знают языка программирования?
И тут на белом коне появляеться NBehave, его задача — облегчить сопровождение и поддержку unit тестов и предоставить «не программистам» возможность протестировать логику.
Смотрим пример:
[Theme]
public void Transfer_to_cash_account()
{
Account savings = null;
Account cash = null;
Story transferStory = new Story("Transfer to cash account");
transferStory
.AsA("savings account holder")
.IWant("to transfer money from my savings account")
.SoThat("I can get cash easily from an ATM");
transferStory
.WithScenario("Savings account is in credit")
.Given("my savings account balance is $balance", 100, accountBalance => { savings = new Account(accountBalance); })
.And("my cash account balance is $balance", 10, accountBalance => { cash = new Account(accountBalance); })
.When("I transfer $amount to cash account", 20, transferAmount => savings.TransferTo(cash, transferAmount))
.Then("my savings account balance should be $balance", 80, expectedBalance => savings.Balance.ShouldEqual(expectedBalance))
.And("my cash account balance should be $balance", 30, expectedBalance => cash.Balance.ShouldEqual(expectedBalance));
transferStory
.WithScenario("Savings account is overdrawn")
.Given("my savings account balance is -20")
.And("my cash account balance is 10")
.When("I transfer 20 to cash account")
.Then("my savings account balance should be -20")
.And("my cash account balance should be 10");
}
* This source code was highlighted with Source Code Highlighter.
В результате теста мы получим следующий output:
Story: Transfer to cash account
Narrative:
As a savings account holder
I want to transfer money from my savings account
So that I can get cash easily from an ATM
Scenario 1: Savings account is in credit
Given my savings account balance is 100
And my cash account balance is 10
When I transfer 20 to cash account
Then my savings account balance should be 80
And my cash account balance should be 30
Scenario 2: Savings account is overdrawn
Given my savings account balance is -20
And my cash account balance is 10
When I transfer 20 to cash account
Then my savings account balance should be -20
And my cash account balance should be 10
* This source code was highlighted with Source Code Highlighter.
Написание Story сводиться к:
- Описанию действия
- Декларации намерений
- Инициализации начальных данных
- Проверки выходных данных
Ну и о минусах библиотеки, из личного опыта:
В первый раз пришлось познакомиться с ней, когда она была ещё весьма сырой.
К синтаксису достаточно сложно привыкнуть и часто надо смотреть в примеры.
В текущей версии добавили альтернативно-упрощённый подход к написанию Story, хотя я его на практике ещё не проверял.
Добавляет работы программистам.
0.4 билд удалось запустить только с SVN репозитория, 0.3 работал с инсталяшки.
Нет нормальной документации, во всём надо разбираться самому =(
Ссылка на пример на 0.3 — grabbagoft.blogspot.com/2007/09/authoring-stories-with-nbehave-03.html