2017-11-23 14 views
1

私は状況があります: サービスクラスに1つの機能を提供したいと考えています。たとえば、 いくつかのパラメータに基づいてjsonファイルを生成しています。私は1つのパブリックメソッドを持ち、公的機関によっていくつかのプライベートメソッドがあり、今ではユニットテストに問題があります。私は可能性を知っています(テストプライベートメソッドはありません、パブリックプライベート(NO!)、refelctions、プライベートパッケージ)、最高のパッケージプライベートソリューションですが、そのサービスクラスはxx.serviceパッケージの中にあり、外に目に見える...サービス層内のプライベートメソッド

私は春のBOOTを使用しています。私の質問は次のようなものです。サービスクラス内にプライベートメソッドを保持するのは悪い方法でしょうか?たぶんそれらをどんな種類のutilクラスにも移動できますか? (メソッドは、メソッドUtilの種類のあることを正直に言うと...)

助けてください:)

+0

サービス層でJSONを生成するのはおそらく間違いです。サービス層はドメインオブジェクトを操作する必要があります。 JSONとの間の変換は、プレゼンテーションレイヤー内になければなりません。 – Raedwald

+0

それは不幸な例だった;) –

答えて

2

テストの下のパブリックメソッドがテストを維持/あまりにも多くの民間の方法とその単純にハードにするセットアップを使用している場合そのようなロジックの一部を特殊なクラスに抽出するのはおそらく時間です。

理想的には1つまたは2つのパブリックメソッドを持つ。

次に、これらのヘルパークラスを単独でテストします(テストは今のところ単純にすべきです)。メインサービスでは、それらを依存関係として注入するだけです。 その後、メインサービステストの依存関係を好きなようにモックします。

+0

答えをありがとう。 –

+0

お返事ありがとうございます。 しかし、私のプライベートメソッドは短いです...そして、それらは、1つのパブリックメソッドによって実現される特定のユースケースに特化しています。例: 公開ファイルdoSth(名前){ if(existFileWithName(name)){ return modifyFile(name); } } プライベートexistFileWithName(名){...} priavte modifyFile(名){...} 私はパブリックメソッドをテストすることができ、そしてそれはプライベートメソッドを使用しています... しかし、私はTDDをしようとしています、最初にプライベートメソッドfucntionalityを記述してテストしたいと思っています。 –

+0

プライベートメソッドをテストすることはありません。パブリックメソッドでプライベートメソッドを少し使っても、簡単にテストケースを作ることができますあなたの良い。あなたがそれらのテストを作成する問題を抱えているとき。それらを命名する..維持する..そして、専門のクラスを抽出して作成する時間 –

関連する問題