web-dev-qa-db-ja.com

JenkinsでC#ユニットテストをスケジュールする方法は?

過去6か月間、テストチームはSeleniumWebdriverを使用してWebベースの製品をテストしてきました。私たちはそれで大きな成功を収め、日常的に使用し続けています。私たちは.netショップであるため、c#単体テストを作成するためにVisualStudioを使用しています。 .netには他のテストフレームワークは使用していません。最近まで、Visual Studio(2013)のテストエクスプローラーウィンドウから自動化テストを手動で実行し、結果を確認してからスプレッドシートに記録していました。これは理想的ではないことはわかっていますが、テストがそれほど多くないため、これまでのところ問題なく適合しています。ただし、作成と保守が必要になる自動化テストの数は、今後数か月で急速に増加する予定です。

私は最近、vstest.console.exeとそのさまざまなコマンドを呼び出すためのバッチファイルを作成し、それらのログをサーバーに追加することを試しています。理想的ではありません。具体的には、ある種のCIサーバーを統合するなど、まだまだ多くのことができることを私は知っています。

私たちはすでにチームファウンデーションサーバーを使用しており、さまざまな仮想サーバー(すべてWindows 8.1を実行)を自由に使用できるので、これを利用することを考えたので、Jenkinsを調べ始めました。問題は、Jenkinksとc#に関する情報があまり見つからないことです。これは主にJavaセットアップに対応しているように見えます。何かが足りませんか?私が見つけた小さな情報は非常に古く、私には機能しませんでした。

Vstest.console.exeプラグインをセットアップしてインストールすることはできましたが、簡単なテストを実行できませんでした。 2012年より前の現在のステップバイステップガイドは素晴らしいでしょう:)Jenkinsがc#と.netフレームワークに行く方法だと思いますか? C#コミュニティ内で使用される「標準」はありますか?クルーズコントロールについて聞いたことがありますので、チェックしてみます。それは実行可能な代替手段ですか? .netで使いやすいですか?

基本的に必要なものは次のとおりです。

  1. Visual Studio内でテストを作成し、c#単体テストを作成し続けます
  2. リモート/ローカルサーバーでの単体テストの実行をスケジュールします
  3. 結果/ログファイルを書き出す-失敗/合格に関する優れたレポート機能は素晴らしいでしょう
  4. 上記のファイルをqa /開発チームに電子メールで送信する

皆さんの何人かが一度この道を進んでいて、いくつかの洞察を共有できることを願っています

11
Banjaxx

Jenkinsを使用して、バッチスクリプトを介してテストを実行し、 NUnit または MSTest プラグインを介してJenkinsにレポートを返すことができます。これを行うには、Jenkinsで実行されたスクリプトからテストランナーを呼び出すだけです(以下のリンクを参照)。私のショップでこれを行う主な理由は、Jenkinsを使用してビルドプロセスを自動化し、新しいコードがプロモートされるたびに自動テストが実行されるためです。ビルドの自動化とレポート作成にJenkinsを使用しない場合、つまりスケジューリングだけが必要な場合、最も基本的なソリューションはタスクスケジューラです(John Oが示したように)。さらに、NUnitではなくMSTestを使用している場合は、他の人が示唆しているように、TFSを確認することをお勧めします。

本当にMSTestでJenkinsを使用したい場合は、構成の観点から次のリンクが役立つ場合があります。

jenkinsでmstestを実行しようとしたときにエラーが発生しました -2012

上記のリンクからJenkinsからMSTestを実行する例:

"C:\ Program Files(x86)\ Microsoft Visual Studio 11.0\Common7\IDE\MSTest.exe" /testcontainer:Example.Tests\bin\Debug\Example.Tests.dll /resultsfile:TestResults.trx

Jenkins MSTestRunnerプラグインはmstest.exeを起動できません -2014

NUnitを使用できる/使用したい場合は、以下を確認してください。

JenkinsからNUnitテストをどのように実行しますか?

JenkinsでNUnitを実行

実際、レポートの目的で、Excelなどにログを記録することは恐ろしい考えではありません(特に組織でSharepointを使用している場合)。最悪の事態が発生し、何も機能しない場合、1つの解決策は、ExcelのCOMオブジェクトモデルを使用して結果をスプレッドシートに直接書き込むことにより、このレポートプロセスを自動化することです。

ただし、TFSが最善の策であることを示唆します。

9
Orphid

Jenkinsや他のCIサーバーを構成する方法ではなく、CIからテストを処理する方法についていくつかの情報を提供します。これはあなたの質問に対する部分的な答えかもしれませんが、少なくとも何かです。 Seleniumテストでは、テストを開始する前に(手動または自動で)ポイントするライブサイトが常に必要であることに注意してください。私はテストスイートを夜に1回実行し、一晩中放しておくことを好みます。これは、NUnitコンソール、バッチ、およびWindowsタスクスケジューラを使用して簡単に実行できます。私の答えを参照してください ここ それを行う方法。案の定、これは他のCIサーバーから実行できます。 NUnitコマンドスイッチ を使用すると、結果を自動的にエクスポートすることもできます。

0
Saifur