MSTest V2扩展

  随着MSTest V2的发布,带来了更好的扩展性,写单元测试有了更多姿势,微软说,可扩展性一直是MSTest V2 API设计的目标,我们姑且相信它,来看看有哪些可扩展特性。

  MSTest V2的扩展性体现在以下几个点:

特性扩展

  TestProperty允许我们为一个测试方法添加描述,它需要两个字符串作为key/value传入。

  MSTest V2允许TestPorperty被扩展,允许我们继承TestPropety,重写它使得获得强类型支持。这样使用起来更加方便也更安全。关于它更具体的介绍可参考这里:RFC 001

断言扩展

  MSTest V2内置了一些断言,满足一般情况的需求,但就是因为它要满足一般情况,因此它的API并非最简洁。

  MSTest V2允许对内置的断言扩展,使得我们可以以更简洁的方式定制自己的断言API。关于它的更具体的介绍可参考这里:RFC 002

执行扩展

  MSTest V2默认的执行流程是先创建一个TestClass实例,然后调用里面的TestMethod方法。这可以满足大多数情况,但是,有时我们想有更多的定制,比如:希望将用例的方法统一包装在另一个方法中,或者用例执行多次等。

  MSTest V2允许我们在以下两个层级加入扩展:

  1. 测试方法级别:允许创建自己的TestMethod特性,定制执行逻辑
  2. 测试类级别:允许创建自己的TestClass特性,定制内部所有测试方法的执行逻辑

  关于它的更具体的介绍可参考这里:RFC 003

数据驱动扩展

  测试用例的输入可以在内部提供(使用DataRow特性),或者来自外部源(文件或数据库)。使用DataRow特性提供的数据是静态的,且无法在多个测试中共享。同时,从文件或数据库读取数据源也很不方便。如果希望数据来自另一个方法,并且希望在不同用例中共享数据,该怎么办呢?在NUnit中可以实现多参数的测试用例,在JUnit中也有用一个方法提供用例输入的设计。

  MSTest V2允许我们实现一个ITestDataSource接口以提供任意需要的数据源,实现类似JUnit方法返回用例输入的功能。因此,我们不仅可以在代码中自定义数据源,还可以将定义的数据源用于多个测试。

  关于它的更具体的介绍可参考这里:RFC 005

总结

  下面这张图描述了上文所述的扩展点:

date: 2017-11-08 21:24:07

posted @ 2018-02-05 22:39  .NET学徒  阅读(258)  评论(0编辑  收藏  举报