ActivePivot サーバーのさまざまな部分と、最も重要なポスト プロセッサに自動テストを実装することを考えていました。
私は初心者なので、この分野の最新技術、ベスト プラクティスとは何か、回避すべき注意事項があるかどうかについて詳しく知りたいと思います。
経験があれば、喜んでお読みいたします。
乾杯、パスカル
ActivePivot サーバーのさまざまな部分と、最も重要なポスト プロセッサに自動テストを実装することを考えていました。
私は初心者なので、この分野の最新技術、ベスト プラクティスとは何か、回避すべき注意事項があるかどうかについて詳しく知りたいと思います。
経験があれば、喜んでお読みいたします。
乾杯、パスカル
それは非常に幅広い質問です。ActivePivotソリューションはJavaソフトウェアの一部であり、ソフトウェアプロジェクトのテストと継続的ビルドに関するすべてのベストプラクティスを継承しています。
ただし、基本的なActivePivotエントリポイントは次のとおりです。
どのように、どこで、いつテストを書くのですか? junitテストを作成し、Mavenで実行し、Jenkinsで継続的ビルドをセットアップします。
(実際の、重要な)ActivePivotインスタンスを単体テストに埋め込む方法は? 埋め込まれたJettyWebアプリケーションサーバーを起動します。ActivePivotサンドボックスアプリケーションはその一例です(com.quartetfs.pivot.jettyserver.JettyServerを参照してください)。同じActivePivotインスタンスに対して一連の単体テストを実行する場合は、Jettyサーバーを静的に起動できます(たとえば、@ BeforeClassで注釈が付けられた静的メソッドで)。いずれにせよ、テストの最後にそれを停止することを忘れないでください。
パフォーマンステストの書き方は?サンドボックスプロジェクトには、 com.quartetfs.pivot.client.MDXBenchmark と呼ばれる小さなMDXベンチマークがあります。濃縮するのは簡単で、良い出発点です。ActivePivotへの接続を示すcom.quartetfs.pivot.client.WebServiceClientもあります
ポストプロセッサをテストする方法は? ActivePivotリリース4.3.5の時点では、分離されたポストプロセッサテスト専用のフレームワークはありません。ポストプロセッサは、クエリ(MDXクエリまたはGetAggregatesクエリ)を通じてテストされます。もちろん、ポストプロセッサの実装にいくつかのユーティリティメソッドがある場合は、それらを標準の単体テストで1つずつテストできます。
ActivePivot ベースのプロジェクトをテストするには、Spring 構成を再利用する方が簡単です。これは ClassPathXmlApplicationContext で実行できます。
ApplicationContext context = new ClassPathXmlApplicationContext("beans.xml");
この簡単なテストでは、Spring が実際に正常かどうかを確認します。次に、クエリを実行する場合は、次のようにします。
IQueriesService queriesService = context.getBean(IQueriesService.class);
queriesService.execute(new MDXQuery(someMDX));
ローディングレイヤーを確認したい場合は、次のことができます。
IStoreUniverse storeUniverse = context.getBean(IStoreUniverse.class);
for (IRelationalStore store : storeUniverse.values) {
assertEquals(hardcodedValue1, store.getSize())
assertEquals(hardcodedValue2, store.search("someKey", "someValue").size())
}
このように、Web アプリ コンテナーを開始する必要はありません。Web アプリ コンテナーは、利用できるポートが必要なために失敗する可能性があります (たとえば、同時に複数のテストを実行できないことを意味します)。
ポスト プロセッサは、簡単にテストできる Basic または DynamicAggregation ポスト プロセッサのいずれかである必要があります。ポイント ILocations で呼び出される .init と評価メソッドに注目してください。高度なポストプロセッサは合理的に単体テストできません。次に、MDX クエリをできるだけシンプルに、かつポスト プロセッサに関連するものとして記述することをお勧めします。
任意の単体テスト フレームワークとモック フレームワークを使用できます。それでも、JUnit と Mockito を使用することをお勧めします。