繁体   English   中英

在单元测试中,如何处理变量命名/赋值?

[英]In Unit Tests, how do you handle variable naming/assignment?

在单元测试中,很多时候,我们面临着必须定义变量值不那么重要的问题。 有时我们必须传递一个字符串,并检查输出是否为相同的字符串。 或者也许是相同的字符串,但大写。 否则,我们正在测试的方法将返回一个空字符串,而不是获取该字符串。

在这些情况下,如何声明,命名和分配这些变量?

例如,考虑以URL作为输入的HTML解析器的上下文:

string google = "http://google.com"

我说的是变量的含义,但不是在测试的背景下告诉我为什么要专门使用它(即,为什么我不使用yahoo?)。

string someUrl = "http://google.com";

在这里,我说的是“一些URL”,因此对于测试目的来说可能并不重要。 但是,我必须选择一些网址。

string someUrl = SomeUrl(); // in this method I just return "http://google.com"

我在这里指出url并不重要,并且我将变量的值隐藏在一种方法中,可能不会以不重要的细节分散测试读者的注意力。

我的推理正确吗? 还有其他方法可以解决此问题吗?

在单元测试中如何处理?

您应该根据最清楚的名称为变量命名。 单元测试可以被认为是测试脚本,它们不必像您的核心发布代码那样高效或优雅。

DEVENTER(n)很难做出决定,因为它很少依赖该决定,例如在公园中漫步的方式

-道格拉斯·亚当斯(Douglas Adams)和约翰·劳埃德(John Lloyd)的《里夫(Liff)》的深层含义。

命名变量,以便它传达意图。

  • 如果变量值无关紧要,则将其命名为anyUrl = ...同样,如果没有关系,我也可能不会使用变量(除非内联值会损害可读性)
  • 如果变量值由于某种原因是特殊的,并且对当前测试很重要,那么我可以使用urlWithHyphens = ...的名称。 我还尝试引入带有SCREAMING_CAPS的局部常量(例如VALUE_OVER_THRESHOLD_OF_2_MINS)只是为了强调。

与OO一样,好名字是可读性+可维护性的一半。

您可以选择喜欢的名字。 没关系!

因此,诸如someSomething类的名称完全可以,硬编码的测试值也可以。

我遵循的唯一约定是选择值本身。 我经常看到开发人员想了几分钟,比如说User对象的firstNamelastName应该是什么。 解决方案是仅使用一小部分您始终使用的默认值。 对我来说,如果是管理员用户,那就绝对是Chuck Norris。 这可以节省您的时间,并使您的脚本更加一致,但这也是可选的。 (但是,由于您选择的网址为http://www.google.com"因此您似乎已经在执行此操作)。

如果在一种方法中仅使用一个URL,则为var url。 如果我使用更多,则为var url1,var url2或var urlGoogle,var urlYahoo。 保持简短,仍然有意义,不要对它考虑太多。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM