首页 / 知识
关于c#:NUnit-如何测试实现特定接口的所有类
2023-04-13 21:38:00

NUnit - How to test all classes that implement a particular interface如果我有接口IFoo,并且有几个实现该接口的类,那么针对该接口测试所有这些类的最佳/最优雅/最聪明的方法是什么? 我想减少测试代码的重复,但仍然"忠于"单元测试的原则。 您认为最佳做法是什么?我正在使用NUnit,但我想任何单元测试框架中的示例都是有效的 如果您有类实现任何一个接口,则它们都需要在该接口中实现方法。为了测试这些类,您需要为每个类创建一个单元测试类。 让我们走一条更明智的路线;如果您的目标是避免代码和测试代码重复,则可能需要创建一个抽象类来处理重复代码。 例如您具有以下界面:
您可能要创建一个抽象类:
测试很容易;在测试类中将抽象类实现为内部类:
...或者让测试类扩展抽象类本身(如果适合的话)。
拥有一个抽象类可以处理接口所隐含的通用代码,从而使代码设计更加简洁。 我希望这对您有意义。 请注意,这是一种常见的设计模式,称为"模板方法"模式。在上面的示例中,模板方法是 许多框架都依赖于这种行为模式,例如在ASP.NET中,您必须在页面或用户控件中实现钩子,例如由 我不同意乔恩·林贾普(Jon Limjap)的话,
返回类型中可能未指定合同的许多部分。与语言无关的示例:
您对LinkedList,ArrayList,CircularlyLinkedList进行的单元测试以及所有其他测试不仅应该测试列表本身是否已返回,还应该测试它们是否已正确修改。 以前有一个关于按合同设计的问题,可以通过一种干燥这些测试的方法来帮助您指出正确的方向。 如果您不希望合同的开销,我建议按照Spoike建议的方式安装试验台:
我认为这不是最佳做法。 一个简单的事实是,接口不过是实现方法的协定。这既不是a。)如何实现该方法,又是b。)该方法应该做什么(仅保证返回类型)的契约,我收集的两个原因将是您想要这种方法的动机测试。 如果您确实希望控制方法的实现,则可以选择:
示例:
任何正确引用该扩展方法的实现都会精确地发出该扩展方法,因此您只需对其进行一次测试。 [TestFixture]类的层次结构如何?将公共测试代码放入基本测试类中,并将其继承到子测试类中。. 在测试接口或基类协定时,我更喜欢让测试框架自动寻找所有实现者。这样一来,您就可以专注于要测试的接口,并可以合理地确保所有实现都将得到测试,而无需进行大量的手动实现。
除了测试接口的基础知识之外,您还应该测试每个单独的实现均符合其特定要求。 我不使用NUnit,但已经测试了C接口。我首先要测试一个TestFoo类,这是它的基本实现,以确保泛型类正常工作。然后,您只需要测试每个界面特有的内容即可。 |
最新内容
相关内容
linux测试url命令?
linux测试url命令?,系统,网络,地址,基础,分析,工作,命令,实战,管理,认证,如何使用linux命令打开网页?在命令符界面浏览网页可以使用lynx,links,linux查看接口命令?
linux查看接口命令?,地址,系统,标准,命令,管理,工作,文件,端口,目录,路径,linux命令?1、linux常用命令如下:查看内核版本:uname-a。控制台-》图使用linux命令调接口?
使用linux命令调接口?,网络,系统,地址,信息,工具,情况,服务,灵活,电脑,名称,简述grub启动引导程序配置及命令行接口详解grub 命令行接口(一次性测试linux一般命令?
测试linux一般命令?,工作,系统,地址,信息,命令,管理,数据,标准,单位,目录,linux命令?1、linux常用命令如下:查看内核版本:uname-a。控制台-》图linux命令测试流量?
linux命令测试流量?,工具,系统,实时,网址,网络,情况,地址,状态,时间,电脑,查看linux网络流量及带宽1、查看网卡实时流量命令: iftop -i eth1测试用的linux命令?
测试用的linux命令?,地址,系统,工作,信息,网络,管理,基础,命令,电脑,目录,软件测试中常用的Linux命令有哪些?1、linux常用命令:pwd命令该命令的linux性能测试命令?
linux性能测试命令?,数据,系统,工具,标准,设备,地址,情况,基础,网络,环境,如何排除linux系统的读写缓存进行磁盘性能测试chkdsk。chkdsk的全称linux并发测试命令?
linux并发测试命令?,网络,地址,系统,工作,服务,网址,检测,软件,标准,信息,linux服务器怎么检测连通性在 Linux 中,可以使用 ping命令会向指定的linux命令添加接口?
linux命令添加接口?,地址,网络,名称,系统,工具,设备,信息,服务,中心,密码,Linux用shell创建子接口称为子shell shell中创建的变量局部于创建它linux操作命令测试?
linux操作命令测试?,网络,系统,地址,情况,工作,命令,状态,分析,检测,标准,Linux文件系统操作命令df命令:用于显示文件系统的磁盘空间使用情况,包手机上测试linux命令?
手机上测试linux命令?,地址,工作,电脑,软件,手机,系统,名字,网络,信息,平台,linux怎么用命令看android手机上已安装应用的名字,包名,版本,图标linux接口模式命令?
linux接口模式命令?,设备,系统,信息,网络,工具,端口,服务,数字,地址,情况,Linux系统中列出PCI设备和USB设备的命令详解1、lspci lspci是另一个