BDD для C # NUnit

Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?

Вот источник: Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?

Вот источник: Я использовал самодельное расширение BDD Spec для написания тестов стиля BDD в NUnit, и мне хотелось узнать, что все думают. Добавляет ли это ценность? Отстой? Если да, то почему? Есть ли что-нибудь получше?

Вот источник: https://github.com/mjezzi/NSpec

Я создал это по двум причинам

  1. , чтобы мои тесты было легко читать.
  2. Чтобы выводить простой английский вывод на просмотрите спецификации.

Вот пример того, как будет выглядеть тест:

-поскольку зомби кажутся популярными в наши дни ..

Учитывая Зомби, Песона и 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).

10
задан mjezzi 16 January 2011 в 17:47
поделиться