3

私はAndroidアプリでローカリゼーションのためのいくつかの単体テストに取り組んでいます。現在、私の単体テストでは、さまざまなロケールのすべてについてさまざまなフォーマット文字列をチェックして、翻訳者がそれらを台無しにしないことを確認しています(これは彼らが行う傾向があります)。基本的に、String.format()を呼び出してもフォーマット例外がスローされないようにしています。

唯一の欠点は、すべての文字列を手動でテストに追加する必要があることです。リフレクションを使用してR.string内のすべての文字列を検索する置換テストに取り組んでいます。文字列の取得は問題ではありませんが、フォーマット文字列が期待する引数の数とタイプを決定する簡単な方法はありますか?

String.format()は、あまりにも多くの引数を渡しても文句を言わないので、おそらく整数の大きな配列(%dにボックス化されていないか%sにtoString()されている可能性があります)を渡して、フォーマットの例外を探すことができます。それでも、正しいタイプの引数を正しい量で渡すことができれば、もう少しいいでしょう:)

4

1 に答える 1

1

Exception正直なところ、自分の本格的なパーサーを使わずに出くわすのは、チェックの方法が一番だと思います。

format(...)メソッドFormatter.javaからすべての要素(引数になります)を見つけるコードを書くことに真剣に興味がある場合(アンカーが見つからないので、control + fformat(Loを実行するだけで見つかります)。このコードは、SDKsources\android-16\java\utilのプライベートメソッドでも利用できますdoFormat

各セクションを見つけて解析するために使用する方法を学ぶと、実際には比較的単純なコードになります。少しの作業と、おそらくからの少しのコピーアンドペーストで、の要素を置き換えるFormatterのではなく、単にその要素を見つける独自のコードを設定できると思います。String

于 2012-08-30T01:05:50.393 に答える