私は、いくつかの、たとえば 50 のフィールドを持つクラスを持っています。このクラスには、いくつかの条件に応じてすべてのフィールドの状態を変更するメソッドもあります。
そのメソッドの単体テストを作成しています。このテストは、指定された条件に応じてすべてのフィールドの状態が正しいことをアサートする必要があるため、テスト クラスからフィールドにアクセスする必要があります。
フィールドがクラス内でのみ意味をなすためプライベートであることを考えると、テスト クラスからそれらにアクセスする方法を見つける必要があります。
私はそれのための2つの方法しか見ていません:
- すべてのフィールドを保護 (またはパッケージの可視性) として設定します
- すべてのフィールドに対して 50 個のゲッターを生成します
- オブジェクト全体ではなく、これらのフィールドの状態を取得するための委任メソッドを 50 個作成する
通常の状況では、最後のものを選択します (ただし、テストのためだけにインターフェイスを変更するのはあまり好きではありません)。しかし、テストのためだけにクラス内に 50 個の新しいメソッドを記述することは本当に意味があるのでしょうか? この場合、メソッドが非常に多いとクラスが不明確になるため、フィールドを保護として設定する方がよいのではないでしょうか?
ノート。リフレクションは、テスト中に使用するのが好きではないため、使用したい最後のオプションです。フィールドの名前が変更された場合、コンパイラーは私にアドバイスしないため、フィールドを参照するリテラルは好きではありません。