質問するログイン新規登録

回答編集履歴

3

文章の修正

2019/12/24 08:40

投稿

BluOxy
BluOxy

スコア2663

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

変な文章な気がしたので直した

2019/12/24 08:40

投稿

BluOxy
BluOxy

スコア2663

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
- それでもprivateメソッドをテストしたいであれば、恐らくそのメソッドの責務が肥大しているだと推測します。
14
+ privateメソッドの責務が肥大している場合は、どうてもprivateなメソッドをテストしたくなります。
17
- その場合は、privateメソッドを各責務毎に分割し、そ内のテストしたいメソッドをpublicすることでprivateメソッドをテストしない、つまり`PrivateObject`を使わずにテストができるよう実装を見直すこと重要と思ます
15
+ しかし、その場合は`PrivateObject`を使うのではなく、privateメソッドを複数publicメソッドに分割し、privateメソッドをテストしないよう見直すでしょう

1

文章の修正

2019/12/24 08:37

投稿

BluOxy
BluOxy

スコア2663

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
- 今回の場合はprivateメソッドを複数publicメソッドに分離するよう工夫し、`PrivateObject`を使わずにテストができるよう実装を見直すことが重要と思います。
17
+ の場合はprivateメソッドを各責務毎に分割し、そ内のテストしたいメソッドをpublicにすることでprivateメソッドをテストないつまり`PrivateObject`を使わずにテストができるよう実装を見直すことが重要と思います。