2010-12-07 5 views
3

Я пытаюсь начать работу с чистого TDD, а также рассмотреть вкус BDD. Я пытаюсь понять, как написания модульных тестов с MSpec чувствует себя в отличие от NUnit.Преобразование тестов MSpec в обычный NUnit

Рассмотрим простой тест MSpec как следующее:

[Subject("PersonRepository")] 
class when_adding_a_new_person 
{ 
    Establish context =() => sut = new PersonRepository(); 

    Because of =() => sut.AddPerson("Jim", "Panse"); 

    It should_have_a_person = sut.Count.ShouldEqual(1); 
    It should_have_that_persion = sut.Contains("Jim", "Panse"); 

    static PersonRepository; 
} 

Как бы вы преобразовать это NUnit в чистом виде, но без использования каких-либо расширений BDD или что-нибудь. Я думаю, что это хорошая идея, что каждый должен утверждать, что это один отдельно выполняемый тест, и Establish и Because должны выполняться только один раз для всех утверждений. Я мог бы использовать [Setup] для Establish и Because, но это будет работать для каждого теста. Я мог бы использовать Assert. для It, но это не сделало бы их отдельными проверками.

Как этот пример контрастирует с стилем NUnit?

ответ

7

Обычно я рекомендую не конвертировать из MSpec в NUnit. Когда вы вводите людей в MSpec, мне нравится начинать с «классического» устройства NUnit (PersonRepositoryTester.TestAddNewPerson), преобразовать его в более приспособление BDDish, подобное приведенному ниже, а затем показать им, как MSpec может помочь снизить уровень шума и повысить читаемость и улучшить отчетность ,

[TestFixture] 
public class When_adding_a_new_person 
{ 
    PersonRepository sut; 

    [TestFixtureSetUp] 
    public void Establish_and_because() 
    { 
     sut = new PersonRepository(); 

     sut.AddPerson("Jim", "Panse"); 
    } 

    [Test] 
    public void It_should_have_one_person() 
    { 
     Assert.That(sut.Count, Is.EqualTo(1)); 
    } 

    [Test] 
    public void It_should_contain_the_new_person() 
    { 
     Assert.That(sut.Contains("Jim", "Panse"), Is.True); 
    } 
} 

 Смежные вопросы

  • Нет связанных вопросов^_^