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

Mat*_*t H 5 unit-testing

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

有一个团队成员抱怨,因为他已经改变了他的开发机器上的日期格式,以手动测试其他日期格式,因此许多测试失败了.在单元测试中测试输出时,我应该使用当前的文化信息,还是可以接受这种硬编码?

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

Dan*_*ann 6

无论运行环境如何,单元测试都应该是100%可重复的.单元测试开始失败的唯一原因是代码改变并破坏了测试.

所以,是的,您需要采取措施确保您的测试继续通过,而不管外部因素如何.

  • +1可重复测试.不太确定"你应该使用当前的文化信息." 考虑设置测试的预期文化,不关心输入/输出,并且具有跨越多种文化的单独测试,以验证针对不同文化的解析/格式化. (2认同)