3

JUNIT と Mockito を使用して、liferay ポートレット プラグイン コードをテストしようとしています。現在、サービスの実装をモックして、モック データを返し、機能をテストしています。

私が直面している問題は、PropsUtil.get("someKey") としてプロパティを取るいくつかのコードをテストする必要があることですが、スタンドアロン JUNIT テストとして実行すると、PropsUtil はどのプロパティ ファイルからも読み取れません。ソースコードを変更せずに、liferay プロパティ (portal*.properties) ファイルからテストを読み取らせる方法はありますか?

4

6 に答える 6

3

私は次の方法を使用しました:

  • 私の TestClass は BaseServiceTestCase を拡張します (liferay src で利用可能)
  • portal-test.propertiesをテスト フォルダー内に保持します (テスト値を含む)。
  • テスト ケースを実行します。

この場合、liferay はすべてのプロパティをロードし、スプリングの初期化を行います。

于 2012-07-02T11:29:59.267 に答える
2

最後の手段として、PowerMockとモックPropsUtil.get()メソッド呼び出しを使用できます。最終的には、昔ながらの Java シングルトンであり、シングルトンを含むコードはテストが容易ではありません..

于 2011-03-07T16:01:44.643 に答える
0

値が実際に portal.properties に設定されていることをテストしている場合を除き、テストで PropsUtil.set を呼び出すだけです。

于 2011-03-07T15:16:37.763 に答える
0

次のように呼び出しをモックすることもできます。

mockStatic(PropsUtil.class);

when(
  PropsUtil.get(PropsKeys.SOCIAL_ACTIVITY_COUNTER_PERIOD_LENGTH)
).thenReturn("1");
于 2012-07-10T10:08:12.680 に答える
0

基本的なインフラストラクチャ、プロパティなどを初期化する InitUtil.init() を呼び出す必要があります...

さらに進んでSpringインフラストラクチャを起動したい場合は、クラスパスにliferayライブラリが必要です。私はこのブログ投稿でmaven環境でそれを行う方法を説明しています: how to use liferay third-party libraries in maven plugin SDK . その場合、必要な作業は、ポータル spring xml 定義 (インフラストラクチャーのもの + 使用する必要のある spring サービスを含むもの) を使用して spring.configs をセットアップし、Init.initWithSpring();liferay ポータルを起動してそれらを使用する呼び出しを行うことだけです。 spring.configs で混同する spring Bean。また、liferay のプロパティを少し変更する必要があります。しかし、それは実際にはユースケースに依存します。

于 2011-03-07T15:50:25.277 に答える