当前位置: 首页 > 面试题库 >

当逻辑基本相同时,可以复制并粘贴单元测试吗?

桓信鸥
2023-03-14
问题内容

我目前有大约10种测试,只要路径或墙壁上有一块,俄罗斯方块就不会向左移动。现在,我将必须测试正确动作的相同行为。

如果我只复制已经存在的10个用于左移动的测试,并仅进行所需的更改并对代码本身也做同样的操作,那是否太糟糕了?还是即使逻辑基本相同,我还是应该从头开始再次进行每个测试?


问题答案:

尝试采用您尚未提到的第三种方法,即重构代码,以便可以在所有10个测试之间共享该测试的一种实现。

关键是,复制代码几乎总是错误的事情。在此示例中,您可以将检查代码重构为一个名为例如的方法IsTetrisPieceUnableToMoveLeftBecauseOfAPieceOrAWall。当为单元测试编写一些“共享”功能时,我总是会使用非常具有描述性的方法名称,因为这样可以非常清楚地说明正在执行/测试的内容。



 类似资料:
  • 问题内容: 我有一种方法,根据从当前日期开始,该方法对从数据库中获取的数据实施不同的逻辑。 我想通过单元测试创​​建对象来测试它,将它们保存在数据库中并调用被测试的方法。但是,为了获得可预测的结果,我每次都需要更改系统日期,而且我不知道如何在Java中执行此操作。 有什么建议吗? 问题答案: 您可以使用当前日期生成预期结果。 或者您编写系统以使用您在测试时提供的日期/时间(而不是时钟),这样,时间

  • 随着数据量和单个文件的增加,我开始遇到更多的内存问题。因此,我的问题是:复制/粘贴这些表的最有效的内存和速度方法是什么? > (...).specialcells(xlCellTypeVisible)。复制目标:=(...)-我还没有找到包含XLValues参数的方法(我想最大限度地减少复制格式化所占用的资源,因为没有公式) 将定义的范围用于复制/粘贴目的(使用xlCellTypeVisible参

  • 我是VSCode编辑器的新手。 以前使用atom时,将光标放在行尾并按Ctrl C键将复制该行。将光标放在另一行的末尾,然后按Ctrl V键将其粘贴到该行的下面。 似乎在VSCode中,我可以以相同的方式复制一行,但当我以相同的方式粘贴时,它会将该行放在所选行上方。当我的光标位于行尾时,这似乎非常违反直觉。 有什么地方可以改变这个的设置吗? 编辑:我没有试图复制一行。我想复制一行并粘贴到另一个文件

  • 问题内容: 我的.emacs中有(cua-mode t),因此Cc是复制的,而Cv是粘贴的,就像桌面上的其他大多数程序(Ubuntu,Gnome,Linux)一样。但是,Emacs似乎并未与其他程序共享剪贴板/复制缓冲区。 例如,如果我在Firefox中使用Cc,则可以将SCv粘贴到终端中,或者将Cv粘贴到gedit中。但是,如果我在emacs中使用Cv(或Cy),则无法获得从Firefox复制的

  • 在Linux上不接触鼠标,在命令模式下的VIM和系统剪贴板之间复制粘贴的最快方法是什么?