[英]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
对象的firstName
和lastName
应该是什么。 解决方案是仅使用一小部分您始终使用的默认值。 对我来说,如果是管理员用户,那就绝对是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.