4.面向特定领域的单元测试框架(一切原则即是领域驱动)
领域驱动设计已经不是什么新鲜的话题了,它已经被我们或多或少的使用过,它强调一切从领域出发;那么特定领域单元测试框架是一个什么样的框架呢,需要的价值在哪里;其实从特定领域开发框架,特定领域架构我们能简单的体会到一丝意思,面向特定领域单元测试框架是在单元测试框架的基础之上进行二次领域相关的封装;比如:如何很好的将领域规则独立起来,如果在单元测试中使用这些独立起来的领域规则;
其实在软件开发的任何一个角落都能找到领域驱动的影子,这也是为什么领域驱动会得到我们认可的重要因素;如果一切都围绕着领域模型来的话,那么任何一个概念都不会牵强的,我们只有关注领域本身才能使软件真的很有价值,而不是一堆代码;
下面我们来简单的看一下 面向特定领域测试框架 的两个基本功能:
4.1.分散测试逻辑、日志记录(让测试逻辑可以重组,记录形式为领域模型)
测试代码执行到最后是需要对其执行的结果进行断言的,如:Assert.IsTrue(testResult.SubmitDT > DateTime.Now);像这样的一段代码我们可以适当的包装Assert.IsTrue方法,让他在验证这段逻辑的时候能识别出领域概念,比如:“Order的提交时间大于今天的时间”,我们可以从两方面入手,一个是领域的抽象,一个是规则的分解;
如果这里的验证不通过,我们实时的记录领域的概念到日志系统,而不是报告那里代码出问题,这样就算不是自己写的代码都能一目了然;
4.2.测试用例的数据重用(为自动化测试准备固定数据,建立Assert的比较测试数据)
同样比较重要的领域概念就是领域数据,领域数据也是单元测试中用例数据;为了能让测试进行自动化测试,我们需要维护一组相对固定的测试数据来供测试程序运行;其实如果想最大化建立领域测试框架有必要开发一套专门的领域测试工具,它能够实时的读取真实数据进行Assert,也就更加的接近自动化测试;
但是单元测试也不需要对真实数据进行验证,真实数据一般是集成测试的时候使用的,如果能用真实数据进行逻辑测试还是很有保障的;