首页 / 知识
关于Java:在单元测试中检查Factory的结果
2023-04-13 19:05:00

Checking the results of a Factory in a unit test我开发了一些行为类似的类,它们都实现了相同的接口。我实现了一个工厂,该工厂创建适当的对象并返回接口。我正在为工厂编写单元测试。您所获得的只是对象的接口。 我想知道Java的答案,但是如果有跨语言的解决方案,我想知道。 数字2,答案是否会像其他答案一样?如果是这样,我也将标记另一个接受的答案,并将我的问题改写为既解决了返回接口的工厂,又不知道实现该接口的具体类是什么类型的情况,以及您确实知道具体的类是什么的情况已使用。 您要尝试的不是单元测试 如果您测试返回的对象是否为特定具体类的实例,则不是单元测试。您正在进行集成测试。尽管集成测试很重要,但这不是一回事。 在单元测试中,您只需要测试对象本身。如果您对返回的抽象对象的具体类型进行断言,则您正在测试返回对象的实现。 一般对象的单元测试 在进行单元测试时,您需要声明四件事: 此外,您只想测试可以从对象实例(即公共接口)中观察到的内容。否则,您将自己束缚于一组特定的实施细节。这将要求您在这些详细信息更改时更改测试。 单元测试工厂 在工厂上进行单元测试真的没有意思,因为您对查询的返回对象的行为不感兴趣。该行为(希望)在其他地方进行了测试,可以在对对象本身进行单元测试时进行推测。您只真正对返回的对象是否具有正确的类型感兴趣,如果您的程序可以编译,则可以保证此类型。 由于工厂不会随时间变化(因为它们将是"构建者",这是另一种模式),因此没有要测试的命令。 工厂负责实例化对象,因此它们不应依赖其他工厂来为它们执行此操作。它们可能取决于构建器,但是即使如此,我们也不应该仅检验构建器是否收到消息来测试构建器的正确性。 这意味着您需要在工厂上进行的测试是它们是否将消息发送到它们所依赖的对象。如果使用依赖注入,这几乎是微不足道的。只需在单元测试中模拟依赖项,并验证它们是否收到消息。 单元测试工厂摘要 就是这样。如果没有依赖项,则没有要测试的东西。除了可能断言返回的对象不是 如果您要求返回的抽象对象类型是特定具体类型的实例,则将其进行集成测试。 这里的其他人已经回答了使用 由于我不知道您的工厂方法是什么样子,所以我现在只能建议 检查对象是否为您要寻找的正确的具体实现:
您可以检查工厂是否使用有效的实例变量设置了具体实例。 如果工厂返回具体实例,则可以使用@Parameters批注以获得更灵活的自动单元测试。
此示例是使用Junit4制作的。您会注意到,仅用一行代码就可以测试Factory方法的所有结果。 @ cem-catikkas我认为比较getClass()。getName()值会更正确。在MyInterfaceImpl1类是子类的情况下,您的测试可能会失败,因为该子类是MyInterfaceImpl1的instance。我将重写如下:
如果您认为这样做可能会失败(我无法想象),请进行两次验证。
更新: 不知道为什么记下来了,所以我将其扩展一下...
|
最新内容
相关内容
linux查看接口命令?
linux查看接口命令?,地址,系统,标准,命令,管理,工作,文件,端口,目录,路径,linux命令?1、linux常用命令如下:查看内核版本:uname-a。控制台-》图检查路由命令linux?
检查路由命令linux?,网络,地址,系统,信息,工具,电脑,时间,通信,服务,命令,linux为了确定网络层经过的路由器数目应用什么命令1、发现到达目标linux数据库检查命令?
linux数据库检查命令?,服务,状态,地址,位置,系统,信息,命令,工作,情况,密码,在linux中,怎样查看Mysql服务运行状态?1、psaux或netstat-tlunppslinux分区检查命令是?
linux分区检查命令是?,系统,设备,工具,管理,情况,信息,检测,分区,密码,单位,如何在Linux上分区硬盘1、使用ssh远程连接工具登录到系统,使用fdislinux检查流量的命令?
linux检查流量的命令?,工具,系统,实时,状态,网络,信息,数据,密码,地址,流量,linux如何获得一个进程的网络流量在类Unix系统中可以使用top查看linux命令添加接口?
linux命令添加接口?,地址,网络,名称,系统,工具,设备,信息,服务,中心,密码,Linux用shell创建子接口称为子shell shell中创建的变量局部于创建它linux检查更新命令是?
linux检查更新命令是?,工作,软件,地址,系统,信息,管理,命令,目录,最新,标准,linux常用命令有哪些linux常用命令如下:查看内核版本:uname-a。控制命令检查linux版本?
命令检查linux版本?,系统,地址,信息,发行,名称,电脑,版本,连续,工具,周期,在Linux命令行下查询当前所使用的shell版本与种类的方法1、一旦你知linux接口模式命令?
linux接口模式命令?,设备,系统,信息,网络,工具,端口,服务,数字,地址,情况,Linux系统中列出PCI设备和USB设备的命令详解1、lspci lspci是另一个linux内存检查命令?
linux内存检查命令?,情况,系统,信息,工具,实时,分析,状态,内存,命令,总量,查看Linux系统进程内存占用情况1、linux查看内存使用情况的方法是使linux下节点检查命令?
linux下节点检查命令?,系统,信息,工作,名称,命令,地址,情况,文件,服务,第一,linux系统怎么进入不同节点命令1、年4月29日ifconfig命令可检查并linux下命令访问接口?
linux下命令访问接口?,网络,信息,状态,系统,地址,服务,工具,基础,管理,设备,linux下用什么命令可以查看网络接口的信息1、ifconfig命令用来配