boolean
2つString
のsを返す関数の単体テストを作成しているときに、アルファベット('a'
- 'z'
)のすべての文字をパラメーターの1つとして1つずつ順番にテストする必要があったので、これを行うためにこれを作成しました。
for(char c = 'a'; c <= 'z'; c++)
{
assertTrue(MyClass.MyFunction(testSubject, new String(c));
}
これは許容できると思ったはずですが、そうではなかったので、代わりに次のようにしました。
for(char c = 'a'; c <= 'z'; c++)
{
assertTrue(MyClass.MyFunction(testSubject, ((Character) c).toString());
}
これはJavaでa char
をa String
に変換する信頼できる方法ですか?それが望ましい方法ですか?Javaについてはあまり詳しくないので、これについて説明をお願いします。
@ElliottFrischしかし、なぜですか?ここではストリームは不要ですが、すべてのループでストリームを使用するように主張したとしても、少なくとも使用しないのはなぜ
—
PhilipRoman
IntStream.rangeClosed('a', 'z')
ですか?
単一の「正しい」方法はありません。これを行うには少なくとも5つの方法があります。どちらを選択するかは、科学的事実だけでなく、ファッションにも依存します。ほとんどの場合、それは単純に重要ではなく、テストプログラムは確かにそれらのケースの1つです。
—
user207421
@PhilipRoman(エドムンドヒラリー)があるから。出来るからです。したいからです(ビリーパイパー、そう思います)。それもクールなアプローチです。
—
エリオットフリッシュ
IntStream.range(0, 26).mapToObj(i -> Character.toString((char) ('a' + i))).forEach(x -> assertTrue(MyClass.MyFunction(testSubject, x)));