私はユーティリティクラスDateUtilを持っているとしましょう(下記参照)。このメソッドを使用するには、 呼び出し元メソッドはDateUtils.getDateAsString(aDate)を使用します。 静的修飾子を削除してDateUtilをSpring Bean(DateUtilsBeanを参照)にして呼び出しクラス に挿入するか、それをそのままにしておく方が良いでしょうか?私は、静的な使用して見ることができますSpringアプリケーションのユーティリティクラス - 静的メソッドを使用する必要がありますか?
一つの欠点は、モックの周りの問題ですが、私はそうは思わないHow to mock with static methods?
public class DateUtils {
public static String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
春豆のバージョン
@Component
public class DateUtilsBean {
public String getDateAsString(Date date) {
String retValue = "" // do something here using date parameter
return retValue;
}
}
_anything_ _could_がSpring Beanとして配線されているからといってSpring Beanとして配線する必要はありません。 –
静的メソッドがアプリケーションを駆動する構成ファイルを読み込むとどうなりますか?それは私がその行動を模擬したいと思う可能性が高いです。あなたは機能テストをしたいと思っていますが、あなたは "設定工場"になりたくありません。もしそれがシングルトンであれば、私はそのメソッドをもっと模擬して、コードからテストを動かすことができます。 しかし、PowerMockでは静的メソッドをモックすることも可能です。 – uthomas
これはオーバーエンジニアリングかもしれませんが、注入可能なBeanにすることで、依存クラスの単体テストが容易になります。インターフェイスを実装していればテストするのがさらに簡単になります。 – Behrang