??随着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允许我们在以下两个层级加入扩展:
- 测试方法级别:允许创建自己的TestMethod特性,定制执行逻辑
- 测试类级别:允许创建自己的TestClass特性,定制内部所有测试方法的执行逻辑
??关于它的更具体的介绍可参考这里:RFC 003
数据驱动扩展
??测试用例的输入可以在内部提供(使用DataRow特性),或者来自外部源(文件或数据库)。使用DataRow特性提供的数据是静态的,且无法在多个测试中共享。同时,从文件或数据库读取数据源也很不方便。如果希望数据来自另一个方法,并且希望在不同用例中共享数据,该怎么办呢?在NUnit中可以实现多参数的测试用例,在JUnit中也有用一个方法提供用例输入的设计。
??MSTest V2允许我们实现一个ITestDataSource接口以提供任意需要的数据源,实现类似JUnit方法返回用例输入的功能。因此,我们不仅可以在代码中自定义数据源,还可以将定义的数据源用于多个测试。
??关于它的更具体的介绍可参考这里:RFC 005
总结
??下面这张图描述了上文所述的扩展点:
date: 2017-11-08 21:24:07