Вы можете описать тесты в стилях Given / When / Then или Arrange / Act / Assert.

ользовал расширение 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<IWeapon>();
        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).

Ответы на вопрос(5)

Ваш ответ на вопрос