質問

私のアプリケーションはdbに接続し、ここからカテゴリのツリーを取得します。デバッグ体制では、この大きなツリーオブジェクトを見ることができ、テストスタブで使用するためにディスク上のどこかにこのオブジェクトを保存する機能について考えました。このように:

mockedDao = mock(MyDao.class);
when(mockedDao.getCategoryTree()).thenReturn(mySavedObject);

mySavedObject を想定-十分に大きいため、手動で生成したり、特別な生成コードを記述したりしたくありません。デバッグセッション中にどこかにシリアライズして保存し、デシリアライズしてテストで thenReturn に渡すことができるようにしたいだけです。 そうするための標準的な方法はありますか?そうでない場合、そのようなアプローチを実装する方が良いですか?

役に立ちましたか?

解決

私はあなたのアイデアをします、それは素晴らしい!

すぐにその機能を提供するライブラリを知りません。オブジェクトがすべて Seriablizable を実装している場合は、 ObjectOutoutStream および ObjectInputStream (つまり、標準のJavaシリアル化)を使用してみてください。通常、そうではありません。その場合、 XStream またはその友人のいずれかを使用すると、さらに運が上がるかもしれません。

他のヒント

通常は、DB全体をモックします。このようなシナリオでは、DBからカテゴリをロードするコードを再利用(および暗黙的にテスト)します。

具体的には、ユニットテストはインメモリデータベースに対して実行されます( hsqldb ) 、テストデータをインポートして、各テストの実行前に初期化します。

ダイナミックマネージドBeans をご覧ください-これは、実行中の値を変更する方法を提供しますJavaアプリケーション。たぶん、あなたのツリーを保持するMBeanを定義し、ツリーを読んで、どこかにそれを保存して、後で再び注入する方法があるでしょう。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top