首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >在单元测试日期和时间格式时,是否适合对预期结果进行硬编码?

在单元测试日期和时间格式时,是否适合对预期结果进行硬编码?
EN

Stack Overflow用户
提问于 2012-02-07 11:20:35
回答 3查看 1K关注 0票数 5

我喜欢保持我的单元测试非常简单和容易遵循。我经常对测试的预期结果进行硬编码,以避免重复测试代码。此外,我经常使用数据驱动测试。例如,如果我正在测试日期/时间的表示格式,我有时会硬编码预期的字符串,即。"1/1/2000“或"1:00 PM”。但是,由于日期和时间格式是特定于文化的,而我们的应用程序是可本地化的,因此实际输出可能会有所不同。然而,我的团队在美国,所以这通常不是问题。我们的持续集成和构建服务器也与美国文化信息一起运行。

有一个团队成员抱怨说,他在自己的开发机器上更改了日期格式,以手动测试其他日期格式,因此他的许多测试都失败了。在单元测试中测试输出时,我是否应该使用当前区域性信息,或者这种硬编码是否可接受?

更新:我最终为某些测试设置了特定的语言环境。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2012-02-07 11:22:49

无论运行在什么环境中,单元测试都应该是100%可重复的。单元测试开始失败的唯一原因是代码更改并破坏了测试。

所以,是的,您需要采取措施来确保您的测试继续通过,而不考虑外部因素。

票数 6
EN

Stack Overflow用户

发布于 2012-02-07 11:26:35

当然,可以对结果进行硬编码,但您需要为区域设置信息提供test-double,以确保单元测试与环境隔离。

您甚至可以添加一个新的单元测试,其中包含模拟其他开发人员的locale设置的test-double。

您的单元测试应该在任何机器上运行并通过。

票数 3
EN

Stack Overflow用户

发布于 2012-02-07 11:28:29

理想情况下,您应该有一套单独的测试来确定您的本地化。就当前文化的测试而言,我的第一选择是将您的特定区域设置强制到测试执行环境中,而不是依赖于操作系统提供的默认设置。如果这是不可能的,我将按照当前区域设置参数化我的单元测试,就像您在主系统中处理本地化的方式一样,并从可本地化的存储中读取期望值。重要的一点是,切换主机上的设置不应该足以关闭您的单元测试套件。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9170563

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档