对于特定于语言环境的单元测试,存在哪些实践?


17

我们最近在我们的应用程序中发现了一个特定于区域设置的问题,尽管很容易解决(一旦我们弄清楚了发生了什么),但它使我的团队正在考虑这方面的单元测试实践。

我们希望尽早发现这些问题,最好是在客户发现它们之前,并且我们希望将来避免重新引入特定于区域设置的错误,但是在至少一种其他文化中复制每个单元测试似乎很多高架。

您如何或将如何进行多语言环境单元测试?


1
是否愿意提供有关您遇到的问题的更多详细信息?听起来很有趣,我很想知道更多。
Mchl 2011年

1
@Mchl这是土耳其语的语言环境错误。我们有一些字符串比较代码,其中包括字母i。
亚当李尔

Answers:


4

通常,您不需要重复每个单元测试。您应该确定真正依赖于语言环境的内容(此处是不错的清单)。与国际化有关的许多事情都经受着比单元测试更高的测试水平。

如果要处理的字符串数据可能采用不同的编码,则可以利用“数据驱动的测试”,即将不同编码的数据传递给相同的测试方法。对于Java,TestNG最适合于此。

另一个可能的问题是日期/时间格式和解析。大多数语言环境使用:分隔时间元素,但有些语言使用点,巴西人使用hm和s(12h15m30s)。在不同语言环境中传递的数据也可以使用此方法-您无需测试所有数据。

使用从右到左语言环境测试GUI通常不是单元测试的主题。

最重要的是,您需要确定单元测试中的哪些数据是特定于语言环境的,并使用数据驱动的测试(数据提供程序)将这些数据提供给测试。


3

以下是一些建议:

  • 始终在本地设置与主要目标受众不同的计算机上进行开发。它可以帮助您快速找到与日期,货币和每个数字格式问题有关的错误。对构建服务器执行相同的操作,将其放置在巴西或越南(实际上不只是设置)。

  • 在单元测试中,在测试标题,字符串等中使用重音符号和特殊字符。我使用的软件(不是我开发的软件)遇到的最常见国际化问题是法语中的é和è甚至ç。将它们放在测试中使用的每个字符串中。使用您经常使用的常用字,例如brèç©

  • 不要忘记在路径中也使用重音符号和特殊图表。Visual Studio.NET本身仍然有很多问题!您应该访问创建此类目录,并在测试中从中读取/写入。

  • 如果使用Visual Studio .NET,请在项目属性的“ 代码分析”下启用“ 全球化规则”。最常见的问题将在编译时产生警告。

  • 雇用团队中的外国人

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.