Continuous-integration-testing
継続的インテグレーション-テスト
継続的インテグレーションの重要な機能の1つは、継続中のテスト*がCIサーバーによって構築されたすべてのコードを確実に保持することです。 CIサーバーによってビルドが実行された後、必要なコードをテストするためにテストケースが配置されていることを確認する必要があります。 すべてのCIサーバーには、 CIスイート*の一部としてユニットテストケースを実行する機能があります。 .Net では、ユニットテストは* .Netフレームワーク*に組み込まれている機能であり、同じことをCIサーバーにも組み込むことができます。
この章では、*。Net *でテストケースを定義し、ビルドの完了後にTeamCityサーバーでこのテストケースを実行する方法を説明します。 このためには、まずサンプルプロジェクトに対してユニットテストが定義されていることを確認する必要があります。
これを行うには、次の手順に細心の注意を払う必要があります。
- ステップ1 *-ユニットテストで使用する新しいクラスをソリューションに追加しましょう。 このクラスには、文字列「Continuous Integration」を保持する名前変数があります。 この文字列はWebページに表示されます。 Simple Projectを右クリックして、メニューオプション*追加→クラス*を選択します。
ステップ2 *-クラスの名前を *Tutorial.cs として指定し、画面下部の[追加]ボタンをクリックします。
ステップ3 *-Tutorial.csファイルを開き、次のコードを追加します。 このコードは、 *Name という文字列を作成し、コンストラクターで名前を Continuous Integration として文字列値に割り当てます。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
namespace Simple {
public class Tutorial {
public String Name;
public Tutorial() {
Name = "Continuous Integration";
}
}
}
ステップ4 *-この新しいクラスを使用するために、 *Demo.aspx.cs ファイルに変更を加えましょう。 このファイルのコードを次のコードで更新します。 したがって、このコードは上記で作成したクラスの新しいインスタンスを作成します。
using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
namespace Simple {
public partial class Demo : System.Web.UI.Page {
Tutorial tp = new Tutorial();
protected void Page_Load(object sender, EventArgs e) {
tp.Name = "Continuous Integration";
}
}
}
ステップ5 *- *demo.aspx ファイルで、 aspx.cs ファイルで作成された tp.Name 変数を参照します。
<%@ Page Language = "C#" AutoEventWireup = "true"
CodeBehind = "Demo.aspx.cs" Inherits = "Simple.Demo" %>
<!DOCTYPE html>
<html xmlns = "http://www.w3.org/1999/xhtml">
<head runat = "server">
<title>finddevguides1</title>
</head>
<body>
<form id = "form1" runat = "server">
<div>
<% = tp.Name%>)
</div>
</form>
</body>
</html>
これらの変更でコードが正常に機能することを確認するために、Visual Studioでコードを実行できます。 コンパイルが完了すると、次の出力が得られます。
ステップ6 *-次に、ユニットテストをプロジェクトに追加します。 *Solution を右クリックして、メニューオプション Add→New Project を選択します。
ステップ7 *-*テスト*に移動し、右側で*ユニットテストプロジェクト*を選択します。 *DemoTest という名前を付けて、[OK]をクリックします。
- ステップ8 *-*デモテストプロジェクト*で、シンプルプロジェクトと必要な*テストアセンブリ*への参照を追加する必要があります。 プロジェクトを右クリックして、メニューオプション[参照の追加]を選択します。
ステップ9 *-表示される次の画面で、[プロジェクト]に移動し、[*シンプルリファレンス]を選択して、[OK]をクリックします。
ステップ10 *-[参照の追加]をもう一度クリックし、[アセンブリ]に移動して、[検索]ボックスに *Web と入力します。 次に、 System.Web の参照を追加します。
- ステップ11 *-*ユニットテストファイル*で、次のコードを追加します。 このコードは、Tutorialクラスに文字列名変数があることを確認します。 また、名前が「継続的統合」の値と等しくなければならないという事実も主張します。 これは、簡単なテストケースになります。
using System;
using Microsoft.VisualStudio.TestTools.UnitTesting;
using Microsoft.VisualStudio.TestTools.UnitTesting.Web;
using System.Web.UI;
using System.Web.UI.WebControls;
using Simple;
namespace DemoTest {
[TestClass]
public class UnitTest1 {
[TestMethod]
public void TestMethod1() {
Tutorial tp = new Tutorial();
Assert.AreEqual(tp.Name, "Continuous Integration");
}
}
}
- ステップ12 *-Visual Studioでテストを実行して、動作することを確認します。 Visual Studioで、メニューオプション[テスト]→[実行]→[すべてのテスト]を選択します。
テストを実行すると、Visual Studioの左側にテストが正常に実行されたことがわかります。
TeamCity内での継続的なテストの有効化–すべてのテストケースが準備できたので、これらをTeam Cityサーバーに統合します。
- ステップ13 *-このため、プロジェクト構成でビルドステップを作成する必要があります。 プロジェクトのホームに移動し、[構成設定の編集]をクリックします。
- ステップ14 *-次のスクリーンショットに示すように、[ビルドステップ]→[MSビルド]に移動し、[ビルドステップの追加]をクリックします。
表示される次の画面で、次の値を追加します-
- Visual Studio Testsとしてランナータイプを選択します。
- オプションのテストステップ名を入力します。
- テストエンジンタイプとして VSTest を選択します。
- テストエンジンのバージョンとして VSTest2013 を選択します。
- テストファイル名で、場所を DemoTest \ bin \ Debug \ DemoTest.dll として指定します。 DemoTest はユニットテストを含むプロジェクトの名前であることに注意してください。 DemoTest.dll は、最初のビルドステップで生成されます。
- 画面の最後にある[保存]をクリックします。
これで、プロジェクトに2つのビルドステップがあります。 最初は、アプリケーションコードとテストプロジェクトをビルドするビルドステップです。 そして、次はテストケースを実行するために使用されます。
ステップ15 *-次に、ビルドプロセス全体をトリガーできるように、Gitですべてのコードをチェックインします。 唯一の違いは今回だけです。次のスクリーンショットに示すように、 Demo親フォルダー*から git add および git commit コマンドを実行する必要があります。
ビルドがトリガーされると、テストに合格したことを示す初期出力が表示されます。
- ステップ16 *-テストに合格した結果をクリックして、テストタブに移動すると、UnitTest1が実行され、合格したことがわかります。