3

我正在为我们的 Android 应用程序中的本地化进行一些单元测试。现在,我的单元测试会检查我们所有不同语言环境的所有不同格式字符串,以确保翻译人员不会把它们弄乱(他们倾向于这样做)。基本上我确保调用 String.format() 不会引发格式异常。

唯一的缺点是我需要手动将每个字符串添加到测试中。我正在做一个替换测试,它使用反射来查找 R.string 中的每个字符串。获取字符串不是问题,但是有没有简单的方法来确定格式字符串期望的参数的数量和类型?

String.format() 如果你传递了太多的参数,它不会抱怨,所以我可能只是传递一个大的整数数组(它可以被拆箱到 %d 或 toString()'ed 到 %s)并查找格式异常. 不过,如果我能以正确的数量传递正确类型的参数,那就更好了:)

4

1 回答 1

1

老实说,我认为检查 an 的方法Exception是您在不使用自己成熟的解析器的情况下遇到的最好的方法。

如果您对编写代码以从(我找不到锚点,因此您只需要 control+f 就可以找到它)format(...)方法中Formatter.java查找所有元素(将成为参数)非常感兴趣format(Lo。此代码也可在 SDK 下sources\android-16\java\util的私有方法中找到doFormat

一旦您了解了它用于查找每个部分并解析它的方法,它实际上是一个相对简单的代码。我认为通过一些工作,也许从 复制粘贴Formatter,您可以设置自己的代码,只需找到 的元素String,而不是替换它们。

于 2012-08-30T01:05:50.393 回答