3

Webアプリプロジェクトには、いくつかのjarファイルが含まれています。jarファイル内のクラスの1つの問題にパッチを適用するために、パッチソースフォルダー内のこのクラスの実装を変更しました。

tomcatにはクラスのロード順序が定義されているため(WEB-INF / WEB-INF / libの前のクラス)、パッチが適用されたバージョンのクラスは、jarファイルの元のバージョンではなくtomcatによってロードされます。したがって、アプリケーションをデプロイするとすぐに、すべてが期待どおりに機能します。

ここで、このパッチが適用されたクラスに対してantからjunitテストを実行します。したがって、元のjarファイルとパッチが適用されたクラスファイルの両方を保持するようにクラスパスを構成します。しかし、jarファイルからパッチが適用されていないバージョンではなく、パッチが適用されたクラスを最初にロードするようにantのjunitタスクに指示する方法はないようです。

問題を回避する方法はありますか?antのjunitタスクによってクラスがロードされる順序を決定する方法はありますか?パッチを適用したクラスをantからテストする他の方法はありますか?

4

1 に答える 1

2

antクラスパスは標準のJavaクラスパスと同じように機能すると思います。クラスパスは、パスが宣言されている順序で検索され、クラスが見つかった最初のパスからクラスがロードされます。

junitタスクのクラスパス要素は次のようになります。

<classpath>
  <pathelement location="${patched.class.folder}"/>
  <pathelement location="${original.class.jar}"/>
</classpath>
于 2009-09-08T20:33:44.650 に答える