回答編集履歴
3
文章の修正
answer
CHANGED
@@ -9,7 +9,7 @@
|
|
9
9
|
|
10
10
|
privateメソッドに対するテストは上記のようなケースでしか一般的には行いません。
|
11
11
|
|
12
|
-
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、そのprivateメソッドを
|
12
|
+
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、そのメソッド経由で呼ばれるprivateメソッドを呼び、最終的にpublicメソッドから意図した戻り値が返ってくればテストとして十分であるためです。
|
13
13
|
|
14
14
|
privateメソッドの責務が肥大している場合は、どうしてもprivateなメソッドをテストしたくなります。
|
15
15
|
しかし、その場合は`PrivateObject`を使うのではなく、privateメソッドを複数のpublicメソッドに分割し、privateメソッドをテストしないよう見直す方が良いでしょう。
|
2
変な文章な気がしたので直した
answer
CHANGED
@@ -3,15 +3,13 @@
|
|
3
3
|
|
4
4
|
しかし、C#の機能の1つであるリフレクションを用いることで`PrivateObject`相当のことができることにはできます。
|
5
5
|
|
6
|
-
ただ、それを試すのは
|
6
|
+
ただ、それを試すのは、**もうリリース済みで手を簡単には入れられないコードをテストしたいケース** に陥ったときの最終手段だと考えてください。
|
7
|
-
- **もうリリース済みで簡単に手を入れられないコード**
|
8
|
-
- **テストコードを書かずに作られたレガシーなコード**
|
9
7
|
|
10
8
|
### そもそも論
|
11
9
|
|
12
|
-
privateメソッドに対するテストは上記のようなケースでしか
|
10
|
+
privateメソッドに対するテストは上記のようなケースでしか一般的には行いません。
|
13
11
|
|
14
|
-
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、そのprivateメソッドを通して意図した戻り値が返ってくれば
|
12
|
+
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、そのprivateメソッドを通して意図した戻り値が返ってくれば十分であるためです。
|
15
13
|
|
16
|
-
|
14
|
+
privateメソッドの責務が肥大している場合は、どうしてもprivateなメソッドをテストしたくなります。
|
17
|
-
その場合は、privateメソッドを
|
15
|
+
しかし、その場合は`PrivateObject`を使うのではなく、privateメソッドを複数のpublicメソッドに分割し、privateメソッドをテストしないよう見直す方が良いでしょう。
|
1
文章の修正
answer
CHANGED
@@ -3,9 +3,15 @@
|
|
3
3
|
|
4
4
|
しかし、C#の機能の1つであるリフレクションを用いることで`PrivateObject`相当のことができることにはできます。
|
5
5
|
|
6
|
+
ただ、それを試すのは下記のようなケースに陥ったときの最終手段だと考えてください。
|
7
|
+
- **もうリリース済みで簡単に手を入れられないコード**
|
8
|
+
- **テストコードを書かずに作られたレガシーなコード**
|
9
|
+
|
6
10
|
### そもそも論
|
7
11
|
|
8
|
-
privateメソッドに対するテストは
|
12
|
+
privateメソッドに対するテストは上記のようなケースでしか普通は行いません。
|
9
|
-
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、意図した戻り値が返ってくればそれで十分であるためです。
|
10
13
|
|
14
|
+
使う側は、そのモジュールで用意されているpublicなメソッドを呼び、そのprivateメソッドを通して意図した戻り値が返ってくればそれで十分であるためです。
|
15
|
+
|
16
|
+
それでもprivateなメソッドをテストしたいのであれば、恐らくそのメソッドの責務が肥大しているだと推測します。
|
11
|
-
|
17
|
+
その場合は、privateメソッドを各責務毎に分割し、その内のテストしたいメソッドをpublicにすることでprivateメソッドをテストしない、つまり`PrivateObject`を使わずにテストができるよう実装を見直すことが重要と思います。
|