純粋なJRXML(カスタムJavaコードは含まれません)を使用していくつかのレポートを実装するタスクがあります。レポートはSQLクエリのみを使用して生成することができ(カスタムコードは不要)、JasperReportサーバー(Javaコードなし=カスタムデータソースとライブラリをインストールする必要はありません)を展開するのは簡単です。ジャスパーレポート。 JRXMLテンプレートからのSQLクエリのテスト
ただし、これらのレポートのテストを自動化する必要があります。 データ検索(SQLクエリ)とレポートレンダリングのテストを分割することにしました。
SQLをテストするために、JRXMLテンプレートから実際のクエリを抽出して、今後のテストのメンテナンスを改善したいと考えています。
レポートクエリを手動でテストにコピーし、文字列置換機能を使用してすべてのパラメータを実際の値に手動で置き換えることができます。しかし、この場合、テストとJRXMLテンプレートの2つの場所で同じクエリを手動で維持する必要があります。そして私たちはそれを避けたいと思います。
JRXMLから取得されたSQLクエリの問題は、依然としてJasperReport固有のプレースホルダが含まれていることです。ような何か:これまでのところ私たちは、おそらく使用できる何かを見つけた
SELECT name, department FROM employees WHERE employee_id = $P{employeeId}
(this threadを参照してください)。しかし、それでもJasperReportsライブラリが実装するロジックの部分的な複製が必要です(JRQueryChunksを処理するロジックを複製し、クエリにパラメータ値を追加する必要があります)。
私はJRXMLからSQLをテストするより良い方法がありますか?
ありがとうございます!
お寄せいただきありがとうございます。私が理解していれば、JRXからパラメータとSQLを抽出することを提案しています(例:JasperDesign.getMainDataSet()。getQuery())。私たちは全く同じアイデアを持っています。私の質問は、Jasperが既にこの機能を備えている場合、ホイールの再作成(コード内のSQLクエリの解析)を避けることができるということです。 –