C++ 在提供国际化支持时,自动化单元测试中的字符串是否仍应硬编码?
在编写具有国际化支持的(C++)程序时,我知道字符串通常应该存储在外部翻译数据库中,而不是硬编码。然而,我想知道在单元测试代码中使用硬编码字符串是否仍然是常见的做法 我的直觉是,在单元测试中硬编码字符串是可以的,因为翻译测试代码的努力将浪费在最终用户身上。然而,在某些情况下,它可能是有用的,比如本地化测试/开发C++ 在提供国际化支持时,自动化单元测试中的字符串是否仍应硬编码?,c++,unit-testing,internationalization,C++,Unit Testing,Internationalization,在编写具有国际化支持的(C++)程序时,我知道字符串通常应该存储在外部翻译数据库中,而不是硬编码。然而,我想知道在单元测试代码中使用硬编码字符串是否仍然是常见的做法 我的直觉是,在单元测试中硬编码字符串是可以的,因为翻译测试代码的努力将浪费在最终用户身上。然而,在某些情况下,它可能是有用的,比如本地化测试/开发 我想知道通常的做法是什么。谢谢。您不必担心输出消息(日志)的语言环境,这些消息注定只能由开发团队读取 通常,您尝试使用测试工具将UTs的结果与基线进行比较。此工具非常关心UT日志中使用的
我想知道通常的做法是什么。谢谢。您不必担心输出消息(日志)的语言环境,这些消息注定只能由开发团队读取 通常,您尝试使用测试工具将UTs的结果与基线进行比较。此工具非常关心UT日志中使用的语言。:)
当然,由于错误或有意更改,与基线的比较有时会失败。
因此,您必须问自己的唯一问题是:发生这种情况时,谁将检查UT日志?如果是开发团队,并且所有开发团队都说英语,那么在UT日志中使用英语 至于非日志字符串(例如,在测试中硬编码的货币量或从文件中读取的货币量),那么,
由于经常使用模拟对象来关注单元测试的主要目标(并且不让它被其他事情破坏),
如果UT的真正目的是完全不同的,不要犹豫模仿本地化过程(例如,将区域设置固定为US/English)
最后,对于专门为测试本地化而设计的单元测试(例如,确保正确解释用户输入,在显示器中使用正确的语言等),情况当然相反:担心国际化,并尝试模仿任何其他阻碍的东西。,国际化不仅会影响输出字符串,还会影响输入(例如小数点字符等)。这一点很好。我想,有专门针对unicode输入的测试用例也是一个好主意。