加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

tdd – 将MSpec测试转换为普通NUnit

发布时间:2020-12-14 04:49:07 所属栏目:百科 来源:网络整理
导读:我正在尝试开始使用纯TDD并考虑BDD风格.我试图掌握,与MSpec相比,写作单元测试的感觉与NUnit完全不同. 考虑一个简单的MSpec测试,如下所示: [Subject("PersonRepository")]class when_adding_a_new_person{ Establish context = () = sut = new PersonReposit
我正在尝试开始使用纯TDD并考虑BDD风格.我试图掌握,与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扩展或任何东西.我认为每个应该断言是一个可单独运行的测试并且建立和因为应该只对所有断言执行一次是一个好主意.我可以使用[Setup]进行建立和因为,但是每次测试都会运行.我可以使用Assert.对于它,但这不会使它们单独运行测试.

这个例子与NUnit风格相比如何?

解决方法

我一般会建议不要从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);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读