3

私は、約 75 万行のコードを持つ Java ベース、Web ベース、7 年前の製品を継承しました。予想通り、年齢を考えると、Maven ベースの構造ではありません。Maven は、アプリケーションのビルドとリリースに使用されます。ただし、Maven はプロジェクト用に荒廃しており、通常は Ant スクリプトの呼び出しに使用されます。

現在のセットアップでは、Sonar、Hudson などの新しい (er) ツールを使用するのが面倒なので、Maven に移行したいと思います。

私は、この変更を行うための良い戦略は何であるべきかをグループに質問しています。コードを移動して Maven 化するための時間とお金をどうにかして得ることができると仮定すると、Maven 化によって機能が壊れていないことをテストする効率的な方法は何でしょうか。言うまでもなく、コード カバレッジが 10% 未満であるため、ユニット/統合テストに頼ることはできません。

既存のセットアップによって作成された戦争と、マベナイゼーション後に作成された戦争を区別する場合、2 つの戦争は (サイズと内容において) 同じである必要がありますか? はいの場合、それは機能が損なわれないことを保証するための必要かつ十分な条件ですか?

ありがとう。

4

2 に答える 2

1

まず第一に、おそらくgradleをお勧めします.mavenよりもずっとクールです。それ以外では、古いビルドと新しいビルドを実行して結果を比較するというあなたの計画は良い考えだと思います。

そうは言っても、先に進むには、ある種の統合テストを実行する必要があります。これは、セレンまたは jweb ユニットを使用した自動クリックスルー テストです。

したがって、おそらく古いビルドを作成して jenkins/hudson/bamboo で実行することから始めて、クリックスルー テストを書き始めてから、ビルドの作業を開始します。

また、コードをリファクタリングするための優れたツールが多数提供されるため、レガシー コードを効果的に使用することもお勧めします。

異なるビルドが同じものをビルドするかどうかをテストする際に、次のことを行います。

/opt/gradle/bin/gradle clean war && jar -tf build/libs/new.war  | sort > /tmp/gradle-war.txt && diff /tmp/ant-war.txt /tmp/gradle-war.txt

/tmp/ant-war.txt が生成される場所

jar -tf old.war | sort | uniq > /tmp/ant-war.txt

このようにして、2 つのビルドで何が変更されたのかを適切に出力できます。

于 2012-04-19T17:24:01.243 に答える
1

切り替えるときに Maven の標準フォルダー構造を使用する場合、2 つの戦争はおそらく同一ではありません。super pom を変更して、所有しているフォルダーと一致するようにフォルダーを変更することはできますが、そうすると、Maven を最初から使用する利点の 1 つが損なわれます。私は標準に固執します。

そのため、コードベースの外部でテストを行い、内部構造に関係なく機能を検証することが望ましいです。Selenium はこれに適しています。

于 2012-04-19T17:41:27.210 に答える