我正在为我们的Android应用中的本地化进行一些单元测试。现在,我的单元测试会检查所有不同格式的字符串,以确保翻译器不会弄乱它们(他们倾向于这样做)。基本上我确保调用String.format()不会抛出格式异常。
唯一的缺点是我需要手动将每个字符串添加到测试中。我正在进行替换测试,使用反射来查找R.string中的每个字符串。获取字符串不是问题,但是有没有简单的方法来确定格式字符串所期望的参数的数量和类型?
String.format()不会抱怨如果你传递了太多的参数,所以我可能只是传递一个大的整数数组(可以将unboxed转换为%d或toString()'ed to%s)并查看用于格式异常。如果我能以正确的数量传递正确类型的参数,那将会更好一点:)
答案 0 :(得分:1)
老实说,我认为检查Exception
的方法是您在不使用自己的完全成熟的解析器时遇到的最佳方法。
如果你真的有兴趣编写代码来查找来自the format(...)
method of Formatter.java
的所有元素(那将是参数)(我找不到锚点,所以你只需要控制+ f {{1你会发现它。)此代码也可以在format(Lo
下的SDK中的私有方法sources\android-16\java\util
中找到。
一旦你学习了用于查找每个部分并解析它的方法,它实际上是一个相对简单的代码。我认为通过一些工作,也许还有一些来自doFormat
的复制粘贴,您可以设置自己的代码,只需找到Formatter
的元素,而不是替换它们。