Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 8901

[C#] テストのためにプライベートメンバ変数を追加するのは悪か?

$
0
0

現在、結合テスト用兼可視化ツールを作成しているが、例えば以下のようなクラスについてテストする場合について少し疑問が出てきた。

classA{publicstringStr{get;}stringTemp_Str{get;}}

上のクラスをテストする際に、最終出力であるStrの中間出力であるTemp_Strをテストもしくは可視化したい場合、Temp_Strをprivateとしてではあるがメンバ変数とするのはどうなのだろうか。当然、外からprivateにはアクセスできないので、実際にはこのクラスに対してリフレクション経由で取得しているのだが、本来不要であるはずの中間出力をメンバ変数にするのはいささかどうなのだろうか。

もちろん、実際は単純なstring型ではなく、情報を格納しているclassである。
テストという意味では、中間出力をまとめたクラスを別途作成してそれに対してテストを行なうか、中間出力しているクラスに対してテストを行なうなど方法はいくつかあるが、あえてメンバ変数にしてテストするのもまた選択肢の一つではあるのかなぁとも思いつつも、テストのためにコードを汚すのもいかがなものかと思う。

テストという意味では、最終出力のみをテストすればいいわけで、中間出力なんて別に必要ないはず。ただ、可視化という意味では、中間出力があった方が便利だとも思うわけで、少し堂々巡り気味。外から見た時に、privateでは何も変化がないわけだし…。

テスト難しい。テストの為の設計と可読性は両立できるものなのだろうか。


Viewing all articles
Browse latest Browse all 8901

Trending Articles