0

こんにちは私はJavaWebアプリ開発者です

問題があります。Webアプリケーションの実行時にクローバーにデータを収集させたいのですが。

私は、Tomcatにパラメーターを追加することで単一のアプリケーションに対してこれを行うことができました(-Dclover.initstring.basedir = "[PATH TO CLOVER DB]")。

それはうまくいきました。

ただし、問題は、複数のアプリケーションがあり、実行時にそれらのデータカバレッジを一度に確認したいということです。

そこで、マージされたDBファイルを参照して同じことを試みました。それは機能しません-マージされたdbファイルは実行時に更新されません。

なぜ、またはどのようにそれを行うべきかについてのアイデアはありますか?

ありがとうございました

4

1 に答える 1

4

ここにいくつかの誤解があります:

まず、クローバーデータベースファイルは実行時に更新されることはなく、ビルド時にのみ更新されます。カバレッジデータは、.dbファイルの横に配置された個別のファイルに記録されます。.dbファイルは、プロジェクトソースの構造と、実行中のインストルメント化されたアプリケーションに必要なその他のデータを記録します。

次に、データベースをマージする唯一の理由は、(直後に)レポートを実行することです。.dbがマージされると、そのカバレッジを収集できなくなります。インストルメントされたアプリケーションの実行前または実行中のマージは適切ではありません。後でのみ適切です。

これがあなたがすべきことです:

プロジェクト(Webアプリケーションに対応)ごとに、Webアプリケーションを一意に識別する明示的なinitstringを追加します。たとえば、webappの場合Fooにはfoo.dbのinitstringがあり、webappBarの場合にはbar.dbのinitstringがあります。

プロジェクトFooのbuild.xml:

<clover-setup initstring="foo.db"/>

プロジェクトバーのbuild.xml:

<clover-setup initstring="bar.db"/>

これで、Webアプリケーションの.dbファイル名が一意になるため、-Dclover.inistring.basedir = / path / to / folder / containg / the / db / files /を追加しても、各Webアプリは他のWebアプリを踏みにじることはありません。

したがって、Webアプリケーションを実行した後、/ path / to / folder / containg / the / db / files /に、次のようなものが表示されるはずです。

foo.db
foo.db9bl74u_g1e05ktv
foo.db9bl74u_g1e05ktv.1
bar.db
bar.db3wl21k_g1fbp9pb
bar.db3wl21k_g1fbp9pb.1

Webアプリをテストしたら、レポートを作成できます。マージする場合は次のようになりますすべてのWebアプリに対して単一のカバレッジレポートを生成する場合は、マージします。通常、マージする理由は他にありません。

ところで:forums.atlassian.comでおそらくより迅速な回答が得られるでしょう。

于 2009-10-31T09:53:17.173 に答える