質問: null){ keyValue.setValue(STRING_EMPTY); }else{ keyValue.setValue(value); } recordInfo.add(keyValue); } ``` という感じで受け取ったパラメータをFieldKeyValuePairというクラスにセットするというもの これの異常系などの考え方がわからないです。 nullが入ってきたときは空文字列を入れるように制御しているので特殊値のパターンはできますが私には後は正常系が1つしか思いつきません これのテストケースを他にどういう風に考えますか? 教えていただけると幸いです。
回答: テスト対象のコードからテストを作成していると実装漏れなどを救えません。 テスト対象のコードから作成するのではなく仕様(要件)をもとに作成します。 質問にはテスト対象のコードしか記載されてないので推測するしかありませんが 一例として私がテストコードを書くとなった場合の考え方を例としてあげてみます。 引数「reportFieldKey」で指定したキー値を持つFieldKeyValuePairのオブジェクトが既にrecordInfoに存在した場合、期待する挙動はどれだろうか。 (1)上書きする (2)エラーとする(xxxxExceptionがthrowされるなど。。。) (3)同じキーでも構わず追加 これはコードからテストコードを作成すると(3)としか考えられないが、addValue()の仕様は本当に(3)でよいのか? (1)であった場合は上書きされることを確認するテストコード (正常系) (2)であった場合はエラー(xxxxExceptionがthrowされる)ことを確認するテストコード(異常系) を作成する必要がある。 →仕様を確認する。 あとはどこまでやるかですが・・・ 仕様ではreportFieldKey, value の値には制御文字(改行コードやタブコードetc...)を許容する? 許容しない場合はこれらのテストコードを作成する必要がある 全部許容する仕様なら...異常系テストはないかな?