Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?
Вот источник: Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?
Вот источник: Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?
Вот источник: https://github.com/mjezzi/NSpec
Я создал это по двум причинам
Вот пример того, как будет выглядеть тест:
-поскольку зомби кажутся популярными в наши дни ..
Учитывая Зомби, Песона и IWeapon:
namespace Project.Tests.PersonVsZombie
{
public class Zombie
{
}
public interface IWeapon
{
void UseAgainst( Zombie zombie );
}
public class Person
{
private IWeapon _weapon;
public bool IsStillAlive { get; set; }
public Person( IWeapon weapon )
{
IsStillAlive = true;
_weapon = weapon;
}
public void Attack( Zombie zombie )
{
if( _weapon != null )
_weapon.UseAgainst( zombie );
else
IsStillAlive = false;
}
}
}
И тесты в стиле NSpec :
public class PersonAttacksZombieTests
{
[Test]
public void When_a_person_with_a_weapon_attacks_a_zombie()
{
var zombie = new Zombie();
var weaponMock = new Mock();
var person = new Person( weaponMock.Object );
person.Attack( zombie );
"It should use the weapon against the zombie".ProveBy( spec =>
weaponMock.Verify( x => x.UseAgainst( zombie ), spec ) );
"It should keep the person alive".ProveBy( spec =>
Assert.That( person.IsStillAlive, Is.True, spec ) );
}
[Test]
public void When_a_person_without_a_weapon_attacks_a_zombie()
{
var zombie = new Zombie();
var person = new Person( null );
person.Attack( zombie );
"It should cause the person to die".ProveBy( spec =>
Assert.That( person.IsStillAlive, Is.False, spec ) );
}
}
Вы получите выходные данные Spec в окне вывода:
[PersonVsZombie]
- PersonAttacksZombieTests
When a person with a weapon attacks a zombie
It should use the weapon against the zombie
It should keep the person alive
When a person without a weapon attacks a zombie
It should cause the person to die
2 passed, 0 failed, 0 skipped, took 0.39 seconds (NUnit 2.5.5).