2011-08-15 10 views
0

レッツは、私たちは、AndroidクライアントとJava APIのサーバー とコードが異なるサブフォルダと同じSVNリポジトリにコミットされましたと言うは、クライアントコードの異なるバージョンに対してテストを自動化する方法

SVNのバージョン1:[Serverバージョン1]

Svnのバージョン2:[Serverバージョン1] [クライアントバージョン1]

Svnのバージョン3:[Serverバージョン2] [クライアントバージョン1]

Svnのバージョン4:[Serverバージョン2] [クライアントバージョン2]

SVNのバージョン5:[Serverバージョン3] [クライアントバージョン2]

開発者のチェックインバージョン5は、セットアップのbuildserverに簡単であり、サーバのバージョン3に対して、最新のクライアントバージョン2を使用して、統合テストを行うにMavenを頼みますコード。私の質問は次のようになり、我々はバージョン1を使用するユーザの大規模なグループを持っていたしかし

が、我々は確かに3

serverversionにクライアントバージョン1のための下位互換性を必要とする

達人/ buildserverが何もビルドで、このタイプの統合のために持っていたん-テスト?私例えば

私は私の統合テストを自動化するチームシティーとMavenを使用しています。

==============================================に

のSVNレイアウト

svn repository 
    client trunk 
    server trunk 
    released version 
     client release version 1 
     client release version 2 

たび開発者のチェックイン:=========

Kozelkaの勧告を求めた後、ここでの方法は、私は自動テストを取得するつもりですですteamcity buildはサーバーコードの "maven install"を行い、それをwarアーティファクトとしてパッケージ化し、ローカルMavenリポジトリにインストールしようとします。

そして、クライアントバージョン1のpomでクライアントV1ブランチのチェックアウトを行うようにチームシップがトリガーされ、最新のサーバーアーチファクトに依存し、統合の前に最新のサーバーアーチファクトを使用して突堤を開始しますクライアントバージョン1のAPIビューを使用してテストし、テストします。

同じことがクライアントversion2ブランチにも適用され、サポートされているすべてのクライアントリリースでは、最新のサーバーが古いAPIビューに対して後方互換性があることを保証するために、別のサブプロジェクトを作成する必要があります。

答えて

1

私はあなたがサポートするすべてのバージョンの枝を使用することをお勧めします。更新する必要のあるバージョンのブランチを作成することができます。

テストは回帰を見つけた場合は、その特定のブランチに修正をコミットします。あなたの提示されたシナリオでは、修正を行う(そしてコミットする)方法がないので、テスト全体がずっと役に立たない。 SVNのため

、分岐がhereに記載されています。 実際には、プロジェクトツリーを別の場所(通常は/ branches /の下)にコピーするだけです。なぜなら、SVNには別の概念の分岐がないからです。他のリビジョン管理システムは異なった働きをしますが、どのリビジョン管理システムを使用していても、ブランチはIMHOのやり方であるようです。

唯一の「欠点」は、各ブランチで個別にテストを維持する必要があることでしょう。これが問題である場合(=テスト数が非常に多い)、テストコードを複数の分岐で共有されたモジュールに分割して解決できます。しかし、典型的には、コミットを1つのブランチから別のブランチにマージして、同じか類似の機能を実現します。このオプションは、分岐内のコードとそのテストが十分に逸脱している場合に重要です。

+0

答えをいただきありがとうございます。svn分岐機能をうまく使用してください。 – laiBilly

1

2つの部分がSVNの異なるサブフォルダにある場合は、ビルドサーバーで2つの異なるプロジェクトを探していると思います。それらを個別に展開する方法もあります。好きなバージョンがあれば、単体テストを呼び出します。

あなたが直面している課題の一部は、あなたが望むもののデプロイメント時間の決定と、ビルド時に行われたテストとデプロイメントのロジックの大部分の不一致です。

私はTCでは、別の「ビルド」タイプを使って、それ以外のものを展開すると思います。他のツールでは、展開を個別のアクティビティとして扱います。

+0

はい、あなたは正しいですが、Mavenは常にあらゆる側面を単一のビルドプロセスにパッケージングするように教えていましたが、マルチクライアントをサポートするには2段階の検証が必要です。 – laiBilly

関連する問題