現在、Jenkins (Hudson) CI サーバーを実行して、.net Web プロジェクトとデータベース プロジェクトをビルドおよびパッケージ化しています。すべてがうまく機能していますが、単体テストの作成を開始し、単体テストに合格した場合にのみビルドに合格したいと考えています。組み込みの msbuild タスクを使用して Web プロジェクトをビルドしています。次の引数で...
MsBuild Version .NET 4.0
MsBuild Build File ./WebProjectFolder/WebProject.csproj
Command Line Arguments ./target:Rebuild /p:Configuration=Release;DeployOnBuild=True;PackageLocation=".\obj\Release\WebProject.zip";PackageAsSingleFile=True
コードに対して自動テストを実行する必要があります。このテストは、マシンでビルドするときに自動的に実行され (おそらくビルド イベント後)、Jenkins がそのプロジェクトのビルドを実行するときにも実行されます。
このように実行すると、Web プロジェクトがテスト プロジェクトを参照しないため、単体テスト プロジェクトがビルドされません。テスト プロジェクトは Web プロジェクトを参照しますが、自動ビルドは主にデプロイをビルドしてパッケージ化するために存在するため、自動ビルドを解体することになると確信しています。これらのテストの実行は、自動化されたビルドおよびパッケージ プロセスの 1 ステップである必要があります。
オプション ...
- 2 つの Jenkins ジョブを作成します。1 つはテストを実行する ... テストが合格すると、Web プロジェクトをビルドしてパッケージ化する別のビルドがトリガーされます。ビルド後のイベントをテスト プロジェクトに置きます。
- プロジェクトの代わりにソリューションをビルドし (ソリューションに必要なテストが含まれていることを確認してください)、nunit コンソールを実行してテストを実行するすべてのテスト プロジェクトにポスト ビルド イベントを配置します。次に、コマンド ラインを使用して、必要なすべてのファイルを bin および content ディレクトリのそれぞれからパッケージにコピーします。
- jenkins で Web プロジェクトをビルドする代わりに、jenkins でテスト プロジェクトをビルドするだけです。テスト プロジェクトは、(テスト対象に応じて) Web プロジェクトを参照し、それをビルドします。
問題...
- 1つではなく2つの仕事があります。1 つではなく 2 つのことをデバッグします。1 つはテストに合格したかどうかを確認するため、もう 1 つは Web プロジェクトをビルドしてコンパイルするためです。テストに合格する可能性がありますが、テストしているもので使用されていないものがある場合、ビルドは失敗する可能性があります...
- これには、ビルドに何が入るかを正確に知る必要があります。現在、msbuild がすべてを行ってくれます。余分なフォルダーが作成されるたびに複数のチームがプロジェクトに取り組んでいる場合、脆弱なコマンド ライン ステートメントについて心配する必要があります。
- これは、ここでの主な目的の破損のようです。テストは、このプロセスで最も重要なことではなく、このプロセスのステップであるべきです。また、トリガーされたビルドが通常のビルドと同じであり、通常のビルドとすべて同じことを行うかどうかも 100% 確信していません。すべての正しいファイルを同じ方法で移動し、それらをすべて同じディレクトリに移動します。
初期問題。
メイン プロジェクトがビルドされるたびにテストを実行したいと考えています。ただし、テスト プロジェクトに対して実行されるビルド後のイベントを Web プロジェクトに追加しても、Web プロジェクトはテスト プロジェクトを参照せず、このプロジェクトのビルドをトリガーしないため、機能しません。私は続けることができます...しかし、それで十分です...
これをうまく機能させるために約 1 週間を費やしましたが、うまくいきませんでした。より良い反応が得られると思われる場合は、自由に編集してください...