好代码是管出来的——.Net Core集成测试与数据驱动测试 (3)

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  注:需要将文件的“复制到输出目录”设置为“总是复制”或者“有更新复制”:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  2.在Fixture类型初始化数据库时,执行SQL脚本初始化数据:
  下面代码首先去Data目录下查找.sql的所有文件,然后依次执行这些SQL脚本。

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  3.修改测试代码(因为脚本添加了2条数据,所以期望值应该是3条):

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  4.执行测试:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  

  测试成功。

数据驱动测试简介

  文章最开始提到过,不管是白盒的覆盖测试还是黑盒的边界/等价测试,它们最直接的体现就是“参数”,传入被测试方法的参数。而这些参数实际上就是“测试用例”,为每一个测试用例编写一个测试方法是不合理的,所以需要一种方法通过变换参数来完成测试,并且尽可能的重用测试代码。这就是数据驱动测试。

基于xUnit.Net的数据驱动测试 Theory&InlineData

  Theory和InlineData是xUnit.Net中提供的数据驱动(参数化)测试的功能特性,下面是一个theory以及InlineData的应用示例:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  运行结果:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

 

  通过InlineData就可以轻易的将测试用例的数据应用到测试方法上,并完成期望的测试。但是当添加新的测试用例时就需要对代码文件进行修改,测试用例放置在代码中管理也不是非常方便,有没有一种可以独立管理测试用例数据的方法呢?

基于excel的数据驱动测试

  xUnit.Net没有提供内置的Excel数据加载功能,但是它的拓展性很好,可以通过实现DataAttribute实现一个Theory的数据源提供器:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  1. 实现DataAttribute抽象类,实现Excel的Theory数据提供器:
  下面是实现Excel数据加载的核心方法:

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  

好代码是管出来的——.Net Core集成测试与数据驱动测试

  以上方法需要注意以下几点:

两个主体:Excel文件名称和测试的方法的MethodInfo,前者用于读取Excel文件,后者用来获取参数信息。

通过MethodInfo获取测试方法的参数列表包括参数类型。

读取Excel数据并于测试方法的参数列表匹配,简单来说就是Excel中每一行的数据就是对应测试方法的参数,有多少行数据测试方法就会被执行多少次。

当Excel中数据读取为double或者float但是测试方法需要int时,需要进行转换。

  注:此处使用的Excel文件读取组件为:https://github.com/ExcelDataReader/ExcelDataReader

  DataAttribute完整代码见:https://github.com/yqszt/xUnitTestDemo/blob/master/XUnitTestProject/ExcelDataAttribute.cs

  2.使用ExcelDataAttribute:

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wsxdxf.html