单元测试--llorch的Visual Studio 基础工具教程(二)

通用的示例说明:

  • 本系列博客只讨论工具的基础,不讨论任何语言。

    • 甚至不讨论快捷键:-)
    • 可以用鼠标就完成本教程
  • IDE默认指代的是Visual Studio 2013 Community Edition。 本系列文章的结尾,你可以熟练地使用它写程序。
  • 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要。
  • 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[]、{}、/、>>、=、(,)。
  • 检查一个设置项的表示方法为:
    • [窗口名称]/{菜单名称}/{子菜单名称}/{设置项项名称}=设置项的值
  • 例如默认的Debug配置:
    • [主窗口]/{解决方案配置管理器}=Debug
  • 检查多个设置项时,按照单个设置项的方式,逐一写出
  • 检查一个设置项有多个值的时候,用括号包括并用内部的逗号分隔,如:
    • [解决方案资源管理器]/{项目名称}/{引用}=(System,System.Core,System.Data,System.Xml)
  • 执行一个左键单击序列,就是将最后的检查项换成”/”,例如退出IDE:
    • [主窗口]/{文件}/{退出}/
  • 右键菜单的连接符号为>>,例如刷新Windows桌面:
    • [桌面]>>{刷新}/
  • 弹出窗口中的设置项的表示与上类似
  • MDI子窗口中设置项的表示与上类似,注意到在Visual Studio中,MDI子窗口的名称在它的左上角或者可能自动吸附到主窗口的四周
  • 标题栏和状态栏作为菜单的推广,适用于上述表示方法
  • 缺陷说明
    • 欢迎反馈,mailto:[email protected]
    • 作者的首选语言是C#
    • 作者是软狗
    • 作者的IDE没装中文语言包,所以有的名词翻译得不准确:-(
    • 由于还没有厘清相关的证书问题,版权保留
    • 系列文章没有提出或解决新的问题,目的只是科普

正文

第一,测试先行

测试先行至少代表了两个好的实践:一是在后续的工作中可以专心于编写程序之上;第二更加深层的理由是接口已经稳定。接口与实现的辩证关系是这样的,“脏” 代码总是从接口和实现都不稳定的编程开始的。接口和实现都稳定的肯定不是编程,而是产品。接口稳定而实现不稳定的代码还有改善的可能,而接口不稳定的代码基本上难以推进工作。总之,不应该在接口不稳定的情况下开始写代码。

源代码与代码片段之间最大的区别在于,源代码可以在一段时间以内保持稳定,因为源代码是充分测试过的。一般的示例只能说明原理,用作代码片段,而不能作为源代码。

测试先行不代表首先创建测试项目。相反,应该先创建项目”项目1”,然后再创建项目”项目1Test”。逻辑上的顺序是这样的:先确定项目的类型,其次确定项目的接口,然后根据接口编写测试项目的内容,最后进入”编码——测试”的反复循环,直到写出了能够通过测试的代码。至此又开始另一个”项目X”的工作。

第二,单元测试

单元测试是最简单而且最有必要的测试。Visual Studio已经集成了很好的单元测试实践,让我们开始吧:-)

[主窗口]/{文件}/{新建}/{项目}/

[新建项目]/{单元测试项目}/

[新建项目]/解决方案=添加到当前解决方案

[新建项目]/OK/

这样,我们的解决方案当中有了一个新的测试项目。可以发现测试项目的引用非常简单。在引用处添加对需要测试的项目的引用,就可以开始编写测试函数了。

运行测试项目的方法是:

[主窗口]/{测试}/{运行}/{所有测试}/

这会弹出测试资源管理器,告诉用户在测试函数执行过程中出现的问题。值得注意的是,自始至终,不推荐为每一个测试单独再编写main()方法,因为main()方法对应的控制台应用程序是一个系统的前端。当然,编写专门的控制台应用程序来进行全部测试也是不错的。

第三,测试和调试的区别

最直观的区别在于,调试就是检查断点处的状态是否符合预期,测试就是看整体上的行为是否符合预期。调试的目的是确保正确的实现,着重接口的内部实现,通常不需要借助专门的外部代码。测试的目的是要集中精力去实现,着重接口的外部行为,要借助专门的外部代码。有的测试还需要借助外部的测试集(可以理解成一个txt文件)来进行。

第四,测试的代码质量

测试还有一个可爱的好处是,测试代码的要求没有正式代码那么苛刻:-)。通常可以借用一些教科书或者官方的示例代码。

第五,编程中精力的分配

测试的智慧在于集中。测试从工序上说,是先用一小段时间确定了测试方法,然后用一大段时间去编写实际工作的代码。它避免了开发人员同时写业务代码和验证代码的尴尬。因此,可以说测试的好处在于让开发人员将精力集中到实现上去。

不仅如此,测试确保了整个开发工作围绕接口来进行,有利于复用和升级。

总结

使用Visual Studio完成的测试只能作为用户了解软件工程的一个开始,但是”在一段时间以内专注地进行编程”而不是写一大堆难以控制的main方法这个方法论是值得保持的。

时间: 2024-10-13 14:23:38

单元测试--llorch的Visual Studio 基础工具教程(二)的相关文章

程序集--llorch的Visual Studio基础教程(终)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

编程工作的组织--llorch的Visual Studio 基础教程(一)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

断点调试--llorch的Visual Studio基础教程(三)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序)

原文:InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET程序) InstallShield Limited Edition for Visual Studio 2013 图文教程(教你如何打包.NET Framework进去) 本文转自“吾乐吧软件站”,原文链接:http://www.wuleba.com/?p=23892 从Visual Studio 2012开始,微软就把自家原来的安装与部署工具彻底废掉了,

visual studio开发工具的C#主流控件属性一览表

visual studio开发工具的C#主流控件属性一览表 详细的介绍了各控制属性的详细中文介绍 C#控件及常用设计整理 1.窗体 1.常用属性 (1)Name属性:用来获取或设置窗体的名称,在应用程序中可通过Name属性来引用窗体. (2) WindowState属性: 用来获取或设置窗体的窗口状态. 取值有三种: Normal (窗体正常显示). Minimized(窗体以最小化形式显示)和 Maximized(窗体以最大化形式显示). (3)StartPosition属性:用来获取或设置运

Visual Studio测试工具TestDriven.NET2.2

原文:Visual Studio测试工具TestDriven.NET2.2 关于TestDriven.NET的文章很多,有很详细的说明,我不太会单元测试只是每次要运行程序才能调试觉得太麻烦了,所以找了找相关工具. 下载:http://www.testdriven.net/downloads/TestDriven.NET-2.22.2468_Personal.zip,是个人版,专业版和企业版都要钱的......官网:http://www.testdriven.net 安装时记得关闭visual s

Visual Studio开发工具升级注意事项

由于前几年公司开发的系统使用的开发工具版本不统一,现在后期维护升级在开发人员的电脑上要同时安装好几个不同的开发工具, 比如VS2008,VS2010,VS2012,甚至还有用VS2003开发的接口之类的程序,这种还在目前的win 7系统上无法安装,只好安装在虚拟机 上了.这样导致开发人员的电脑安装的软件过于庞大,C盘即时有100G的空间,也会被占用的所剩无几.电脑运行的速度也是大大下降, 严重影响了工作效率,而且有时候几个版本切换来切换去也麻烦,而且低效. 疼定思疼之下,我们觉得将开发环境尽量统

源代码管理--llorch的Visual Studio基本教程(四)

通用的示例说明: 本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名

源代码管理--llorch的Visual Studio基本教程(七)

本系列博客只讨论工具的基础,不讨论任何语言. 甚至不讨论快捷键:-) 可以用鼠标就完成本教程 IDE默认指代的是Visual Studio 2013 Community Edition. 本系列文章的结尾,你可以熟练地使用它写程序. 将Visual Studio启动后的默认布局状态称为主窗口,主窗口标题栏中显示的项目名称不必要. 在日常口语和Windows资源管理器的基础上定义了几个描述菜单操作的符号:[].{}./.>>.=.(,). 检查一个设置项的表示方法为: [窗口名称]/{菜单名称}