SlideShare ist ein Scribd-Unternehmen logo
1 von 42
Downloaden Sie, um offline zu lesen
基礎から見直す ASP.NET MVC
   の単体テスト自動化方法
~ Windows Azure 関連もあるかも~
   Microsft MVP for Windows Azure

                          割と普通



                                    1
自己紹介
• 割と普通 ( @normalian )
 – Windows Azure のコミュニティメンバ
   • Japan Windows Azure User Group
     http://r.jazug.jp/
 – わんくま同盟 のコミュニティメンバ
   • http://www.wankuma.com/
 – Microsoft MVP for Windows Azure 2010~




                                           2
本セッションの目的とゴール
• 目的
 – C#/VB.NET で単体テスト自動化するため、どのよ
   うにテストコードを記述すれば良いかを認知
 – 単体テスト自動化を支援するツール、ライブラリ群を
   認知


• ゴール
 – C#/VB.NET で、単体テストの自動化が可能なテ
   ストコードを効率的に記述することができる

                                 3
アジェンダ
 何故 単体テスト自動化 が必要?

  単体テスト自動化 のコツ

  単体テストを効率化するツール群

  まとめ

 参考
何で単体テスト自動化が必要?
• 良く言われるのは以下のメリット
 – 単体テストの工数を削減できる

 – コードの保守・再利用性が向上する

 – コードが綺麗になる




                      5
単体テストの工数を削減できる

仕様変更が増える程、単体
  テスト工数は増大




                  6
コードの保守・再利用性が向上する
• 変更に伴うデグレを瞬時に検知できる
 – リファクタリングや保守が容易
 – 単体テストコードの動作検証がいつでも可能


• 外部仕様が容易に理解できる
 – メソッドの外部仕様がテストコードに記載
 – ドキュメント・コードの二重化を防止



                          7
コードが綺麗になる
• ソースコードのテスタビリティが向上する
 – 単体テストの自動化を意識したインターフェースの定
   義を強制
 – テストコードをマニュアルとして利用可能
 – コーディング力が向上


• 若手、新人の教育向けに適用できる



                              8
アジェンダ
 何故 単体テスト自動化 が必要?

  単体テスト自動化 のコツ

  単体テストを効率化するツール群

  まとめ

 参考
単体テストの対象を明確化する
• データの入出力ポイントに対して単
  体テストを実施する   モデルのテスト

HTML/   Java       画面      コント    モデル
 CSS    Script     モデル     ローラ




JavaScript で記    JavaScript から
                                 コントローラの
述したロジック          C# へのマッピ
                                 テスト
のテスト             ング                     JavaScript
                                        C#
                                                     10
単体テスト自動化が容易なインター
   フェースを定義する 1/3
• 従来の ASP.NET Web Forms では、単体テ
  ストの自動化がきわめて困難
  メインコード




  テストコード
単体テスト自動化が容易なインター
  フェースを定義する 2/3
• ASP.NET MVC で単体テストの自動化が容易に
   メインコード




   テストコード
単体テスト自動化が容易なインター
   フェースを定義する 3/3
• Testing Framework や NUnit 等で自動テ
  スト可能な外部インターフェース設計とする
             ViewReult   コント
             • ViewBag   ローラ
             • Model

             Web API の
               応答


            XXXXResult
             (その他の応答)
                                    13
変数名の命名規則に留意する 1/2

• テストメソッド名、変数名からチェック対象を理解
  できるように命名する

良い例
 [TestMethod]
 public void Indexがリストを返す()
 {
    List<string> expect = new List<string>(){ "a", "b", "c" };
    List<string> actual = null;
    HomeController controller = new HomeController();
    actual = (controller.Index() as ViewResult).Model;
    Assert.Equals( expect, actual );
 }
                                                                 14
変数名の命名規則に留意する 2/2

• 「悪い例」では、テストメソッド名、変数名から
  チェック対象が理解できない

悪い例
 [TestMethod]
 public void Index ()
 {
    HomeController controller = new HomeController();

     var actual = (controller.Index() as ViewResult).Model;

     Assert.Equals(new List<string>(){ "a", "b", "c" }, actual );
 }
                                                                    15
1メソッド・1アサートを心がける 1/2
• テスト対象を明確化するため、1メソッド・1アサートを
  心がける
• if 文, for 文, while 文に Assert はダメ、絶対
良い例
 string expect = XXXXXX;
 string actual = null;

 (中間ロジック)

 Assert.Eqauls( expect, actual );



                                        16
1メソッド・1アサートを心がける 2/2
• 「悪い例」では、チェックする場所が散って何をチェックして
  いるか分からない
悪い例
 string expect = XXXXXX;
 string actual = null;

 (中間ロジック)

 if(flag == true) {
   Assert.Eqauls( expect, actual );
 }else{
     Assert.Fail(“ここは通らないはず”);
 }
                                      17
モックを効率的に作成する 1/2
• Moq.dll 等を利用して HttpContextBase,
  IPrincipal, IIdentity 等のモック作成が難しい
  クラスを作成する
 [TestMethod()]
 public void IndexTest01()
 {
                                                                                            • Moq.dll を利用してもス
   string expect = typeof(RedirectToRouteResult).FullName;
   string actual;
   BuyHistoryController target = new BuyHistoryController(new TestOrderRepository());
                                                                                              テップ数が多い
     //モックの作成
     var mockHttpContextBase = new Mock<HttpContextBase>();
                                                                                            • Moq.dll を利用しないと
     var mockIdentity = new Mock<IIdentity>();
     var mockPrincipal = new Mock<IPrincipal>();                                              数倍のコード行数になる
     //ユーザ情報の設定&httpContextオブジェクトの作成
     mockIdentity.Setup(identity => identity.IsAuthenticated).Returns(true);
     mockIdentity.Setup(identity => identity.Name).Returns("someUser");
     mockPrincipal.Setup(principal => principal.Identity).Returns(mockIdentity.Object);
     mockHttpContextBase.Setup(httpContextBase => httpContextBase.User)
        .Returns(mockPrincipal.Object);

     ControllerContext context = new ControllerContext(mockHttpContextBase.Object, new RouteData(), target);
     target.ControllerContext = context;
     actual = target.Index().GetType().FullName;
     Assert.AreEqual(expect, actual);
 }




                                                                                                                18
モックを効率的に作成する 2/2
• モック作成は行数が伸びるので共通化する
[TestMethod()]
public void IndexTest01(){
   string expected= typeof(RedirectToRouteResult).FullName;
   string actual;
   BuyHistoryController target =           モック作成を共通化
        new BuyHistoryController(new TestOrderRepository());
   ControllerContext context = new ControllerContext(
      Utils.CreateControllerContext(true, "someuser")
      , new RouteData(), target);
   target.ControllerContext = context;
   actual = target.Index().GetType().FullName;
  Assert.AreEqual(expect, actual);
}

                                                               19
名前空間、クラス名の命名規則に留意する

• テスト対象のプロジェクト、クラスが分かりやすいよう
  に命名規則を規定する
 – プロジェクト名:MyMVC → MyMVC.Test
 – クラス名: MyClass → MyClassTest
 – メソッド名: MyMethod → MyMethodTest


• 命名規約に従うことで、 TestDriven.NET を利
  用した、メインコード/テストコードの切り替えが可能
 – http://www.testdriven.net/quickstart.aspx

                                               20
アジェンダ
 何故 単体テスト自動化 が必要?

  単体テスト自動化 のコツ

  単体テストを効率化するツール群

  まとめ

 参考
ツールを利用したテスト効率化したい
• 紹介したツール・ライブラリを利用
  してテストを自動化する
HTML/   Java     画面    コント   モデル
 CSS    Script   モデル   ローラ




                                   JavaScript
                                   C#
                                                22
ツールを利用したテスト効率化(β)
• 紹介したツール・ライブラリを利用
  してテストを自動化する
HTML/    View          View    コント   モデル
 CSS     Model         Model   ローラ

                 knocko                Entity
    knock                  AutoM
                 ut.map                Frame
    out.js                 apper
                 ping.js                work



                                           JavaScript
                                           C#
                                                        23
ツールを利用したテスト効率化(β)
• 紹介したツール・ライブラリを利用
  してテストを自動化する
HTML/  View    View      コント モデル
 QUnit-tap
 CSS   Model   Model   Testing
                        ローラ
で単体テス knocko Framework Entity
 ト自動化 ut.map 単体テスト自動化
  knock          AutoM
                            Frame
  out.js         apper
node.exe ping.js MSTest.exe work

                                   JavaScript
                                   C#
                                                24
紹介するツール・ライブラリ群
• 今回は以下のライブラリ・ツールを紹介
 –   knockout.js
 –   knockout.mapping.js
 –   AutoMapper
 –   Qunit-tap
knockout.js
• DOM 要素と JSON オブジェクトのマッピング機能
 var viewModel = {
    left: ko.observable( 30 ),
    right: ko.observable( 40 )    onblur 等のイベントが発生した
 };                               タイミングで、ViewModel と
  viewModel.answer =              DOM要素で値を同期
     ko.dependentObservable(function () {
         return parseInt(this.left()) + parseInt(this.right());
     }, viewModel);
 ko.applyBindings(viewModel);

 <input type=“text” data-bind=“value: left” /> +
 <input type=“text” data-bind=“value: right” /> = <span data-
 bind="text: answer"></span>
                                                                26
Knockout.mapping.js 1/2
• C#/VB.NET の ViewModel と JSON オブジェクト
  をマッピング             { name: “若人”, age: 20}
                              等のJSONに置換される処理
    <script type="text/javascript">
      //JSONオブジェクトから、ViewModel を作成
      var initialData =
          @Html.Raw(Json.Encode(Model));
      var viewModel = ko.mapping.fromJS(initialData);

      //DOM要素を読み込み後、ViewModel を Binding
      $( function(){
           ko.applyBindings(viewModel);
       });
    </script>              DOM 要素 と viewModel イ
                            ンスタンスとを双方向バインド
                                                        27
Knockout.mapping.js 2/2
• C#/VB.NET の ViewModel と JSON オブジェクト
  をマッピング
   $.ajax({
     type:“POST”, dataType: "json",
     contentType: "application/json",
     data : ko.mapping.toJSON(viewModel),
     url: "@Url.Content("~/api/Values/")",
     success :
        function(res){ alert(JSON.stringify(res)); }
   });

  public class ValuesController : ApiController{
       public string Post(ViewModel viewModel){
             return "server recieved answer = " +
    viewModel.answer; }
                                                       28
AutoMapper
• Model – ViewModel といったモデル間のマッピ
  ングを実施する
• 複数モデルからの集約化等、細かな制御が可能

    Model                ViewModel




     項目1

     項目2
AutoMapper
• 「XXX.ID = YYY.ID」の羅列を防止できる
• マッピングが存在しない場合は一括でチェック可能
 Product product = ProductRepository.GetById(id);

 Mapping.AutoMapperBootstrapper.Configure();

 Mapper.CreateMap<Product, ProductViewModel>();
 Mapper.Map<Product, ProductViewModel>(product);

 var productViewModel = Mapper.Map<Product,
 ProductViewModel>(product);
QUnit-tap の利用
• node.exe から実行可能な QUnit
 – node.exe → Node.js の Windows 実装
 – QUnit → ブラウザ上で JavaScript を単体テスト
• knockout.js の ViewModel が対象?
  require('../test_helper.js');
  QUnit.test('my calc test', function() {
     var expect = 3;
     var actual = calc( 1, 2 );
     assert.equal(expect, actual);
  });
  QUnit.start();
アジェンダ
 何故 単体テスト自動化 が必要?

  単体テスト自動化 のコツ

  単体テストを効率化するツール群

  まとめ

 参考
まとめ
• ASP.NET MVC は単体テストの自動化に向
  いている

• 単体テストの自動化を実施するためにはコツ
  がある

• 単体テストの自動化を支援するツールは多々
  存在する
View と コントローラの構成 (β)
HTML/CSS                        ViewM
                View knockout.map       Contr   Model
    knockout.js Model   ping.js  odel   oller        Entity
                                                  Framework
HTML/CSS                       ViewM
                View knockout.map
    knockout.js
                Model ping.js odel              Model
HTML/CSS        View           ViewM                 Entity
                     knockout.map
    knockout.js
                Model ping.js odel                Framework

                                   1対N      N対M
           1対1 対応
                                   対応       対応

                                                対応関係
                                                C#
                                                JavaScript
アジェンダ
 何故 単体テスト自動化 が必要?

  単体テスト自動化 のコツ

  単体テストを効率化するツール群

  まとめ

 参考
参考 1/2
• InfoQ – ASP.NET MVC のテスト方法
   – http://www.infoq.com/jp/news/2012/03/aspnet-
     unit-test
• MSDN Library – ASP.NET MVC アプリケーションの単体テスト
   – http://msdn.microsoft.com/ja-
     jp/library/ff936235.aspx
• ASP.NET MVC3 における単体テストの基礎
   – http://codezine.jp/article/detail/6493
• wa りと na はてな日記 - Moq.dll on ASP.NET MVC その2
   – http://d.hatena.ne.jp/waritohutsu/20090909/
参考 2/2
• knockout.js Documentation > mapping
   – http://knockoutjs.com/documentation/plugins-
     mapping.html
• knockout.js Documentation > The “template”
  binding
   – http://knockoutjs.com/documentation/template-
     binding.html
• knockout.js の注意すべき点
   – http://d.hatena.ne.jp/shiba-yan/20120130/
• miso_soup3 - AutoMapper+ViewModel In MVC その2
   – http://d.hatena.ne.jp/miso_soup3/20120408/
余談!
というか



続編!
クラウド上で単体テスト自動化
• Trac Lightning on Windows Azure
  – https://github.com/normalian/WATracLightning
テスト自動化もクラウドへ…
単体テスト自動化

(手動キック)

 単体テストの自動化

 (自動キック)


   全てクラウドへ・・・
自はこ
    動ての
    テし
    スな
    トく
    坂遠
    をい
    よ
    ・
    ・
    ・




未
          ばのよオ
          かぼうレ
          りりやは
          だはく
          かじ




完
          らめ
          なた

Weitere ähnliche Inhalte

Was ist angesagt?

Was ist angesagt? (20)

オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primerオブジェクト指向プログラミング入門 -- Java object-oriented programming primer
オブジェクト指向プログラミング入門 -- Java object-oriented programming primer
 
GUI アプリケーションにおける MVC
GUI アプリケーションにおける MVCGUI アプリケーションにおける MVC
GUI アプリケーションにおける MVC
 
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
SQL上級者こそ知って欲しい、なぜO/Rマッパーが重要か?
 
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
[フルバージョン] WebLogic Server for OCI 活用のご提案 - TCO削減とシステムのモダナイズ
 
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
【Oracle Cloud ウェビナー】WebLogic Serverのご紹介
 
雑談会議 Azure AD B2C 第一回
雑談会議 Azure AD B2C 第一回雑談会議 Azure AD B2C 第一回
雑談会議 Azure AD B2C 第一回
 
Azure DevOps入門~TechLab編
Azure DevOps入門~TechLab編Azure DevOps入門~TechLab編
Azure DevOps入門~TechLab編
 
ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方ドメイン駆動設計のための Spring の上手な使い方
ドメイン駆動設計のための Spring の上手な使い方
 
あの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoRあの日見たMVCを僕たちはまだ知らない for RoR
あの日見たMVCを僕たちはまだ知らない for RoR
 
MVC の Model を考える
MVC の Model を考えるMVC の Model を考える
MVC の Model を考える
 
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話DDD x CQRS   更新系と参照系で異なるORMを併用して上手くいった話
DDD x CQRS 更新系と参照系で異なるORMを併用して上手くいった話
 
【BS1】What’s new in visual studio 2022 and c# 10
【BS1】What’s new in visual studio 2022 and c# 10【BS1】What’s new in visual studio 2022 and c# 10
【BS1】What’s new in visual studio 2022 and c# 10
 
どうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCIどうやらテスト駆動型開発は死んだようです。これからのCI
どうやらテスト駆動型開発は死んだようです。これからのCI
 
あらためて Azure virtual network
あらためて Azure virtual networkあらためて Azure virtual network
あらためて Azure virtual network
 
やはりお前らのMVCは間違っている
やはりお前らのMVCは間違っているやはりお前らのMVCは間違っている
やはりお前らのMVCは間違っている
 
ドメイン駆動設計入門
ドメイン駆動設計入門ドメイン駆動設計入門
ドメイン駆動設計入門
 
Java EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行についてJava EE から Quarkus による開発への移行について
Java EE から Quarkus による開発への移行について
 
ドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだドメイン駆動設計 思えば遠くにきたもんだ
ドメイン駆動設計 思えば遠くにきたもんだ
 
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターンAzure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
Azure Cosmos DB を使った クラウドネイティブアプリケーションの 設計パターン
 
Flyway使いたい
Flyway使いたいFlyway使いたい
Flyway使いたい
 

Andere mochten auch

Henrik Kniberg - Scrum and XP beyond the trenches
Henrik Kniberg - Scrum and XP beyond the trenchesHenrik Kniberg - Scrum and XP beyond the trenches
Henrik Kniberg - Scrum and XP beyond the trenches
AgileSparks
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
miso- soup3
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
Wataru Terada
 

Andere mochten auch (15)

ユニットテストを意識して安心しよう
ユニットテストを意識して安心しようユニットテストを意識して安心しよう
ユニットテストを意識して安心しよう
 
Sencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha CmdSencha フレームワークの統合開発ツール Sencha Cmd
Sencha フレームワークの統合開発ツール Sencha Cmd
 
Windows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみたWindows ストアアプリのgrid viewを入門してみた
Windows ストアアプリのgrid viewを入門してみた
 
Henrik Kniberg - Scrum and XP beyond the trenches
Henrik Kniberg - Scrum and XP beyond the trenchesHenrik Kniberg - Scrum and XP beyond the trenches
Henrik Kniberg - Scrum and XP beyond the trenches
 
cara instalasi sistem operasi jaringan
cara instalasi sistem operasi jaringancara instalasi sistem operasi jaringan
cara instalasi sistem operasi jaringan
 
ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99ASP.NET WebAPI 体験記 #clrh99
ASP.NET WebAPI 体験記 #clrh99
 
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙いKnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
KnockoutJS勉強会 プロジェクトにmvvmを適用する狙い
 
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsiderMoq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
Moq & Fakes Framework を使った実践的ユニットテスト - BuildInsider
 
最近の単体テスト
最近の単体テスト最近の単体テスト
最近の単体テスト
 
50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック50分で掴み取る ASP.NET Web API パターン&テクニック
50分で掴み取る ASP.NET Web API パターン&テクニック
 
認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきました認定スクラムマスター研修に行ってきました
認定スクラムマスター研修に行ってきました
 
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
ちゃんとした C# プログラムを書けるようになる実践的な方法~ Visual Studio を使った 高品質・低コスト・保守性の高い開発
 
KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例KnockoutJSを使用したアプリケーションの構築例
KnockoutJSを使用したアプリケーションの構築例
 
単体テストで工数を短縮する
単体テストで工数を短縮する単体テストで工数を短縮する
単体テストで工数を短縮する
 
市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①市場で勝ち続けるための品質とテストの技術①
市場で勝ち続けるための品質とテストの技術①
 

Ähnlich wie 基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~

Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Akira Inoue
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
Ayumi Goto
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
Y Watanabe
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 

Ähnlich wie 基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~ (20)

Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
Visual Studio 2012 Web 開発 ~ One ASP.NET から TypeScript まで ~
 
エンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJSエンタープライズ分野での実践AngularJS
エンタープライズ分野での実践AngularJS
 
Selenium webdriver使ってみようず
Selenium webdriver使ってみようずSelenium webdriver使ってみようず
Selenium webdriver使ってみようず
 
Apache Torqueについて
Apache TorqueについてApache Torqueについて
Apache Torqueについて
 
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発ASP.NET MVC と jQuery で実践する標準志向 Web 開発
ASP.NET MVC と jQuery で実践する標準志向 Web 開発
 
CruiseControl.NET設置
CruiseControl.NET設置CruiseControl.NET設置
CruiseControl.NET設置
 
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ (Rev.2) ~ Any browser. Any host. Any OS. Open Source. ~
 
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsugSpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
SpringMVCとmixer2で作るWebアプリのキホン 2013-01-24 Spring勉強会 #jsug
 
Ruby test double
Ruby test doubleRuby test double
Ruby test double
 
How to Make Own Framework built on OWIN
How to Make Own Framework built on OWINHow to Make Own Framework built on OWIN
How to Make Own Framework built on OWIN
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
Spring と TDD
Spring と TDDSpring と TDD
Spring と TDD
 
ASP.NET MVC 1.0
ASP.NET MVC 1.0ASP.NET MVC 1.0
ASP.NET MVC 1.0
 
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
テスト 【クラウドアプリケーションのためのオブジェクト指向分析設計講座 第33回】
 
CodeIgniter入門
CodeIgniter入門CodeIgniter入門
CodeIgniter入門
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
20090212
2009021220090212
20090212
 
Ajax 応用
Ajax 応用Ajax 応用
Ajax 応用
 
Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010Apexコアデベロッパーセミナー(Apexコード)071010
Apexコアデベロッパーセミナー(Apexコード)071010
 
Sencha ug3 siesta_share
Sencha ug3 siesta_shareSencha ug3 siesta_share
Sencha ug3 siesta_share
 

Mehr von normalian

エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
normalian
 
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL DatabaseWindows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
normalian
 
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
normalian
 
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かすWebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
normalian
 
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
normalian
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
normalian
 
WebSphere V7を Windows Azure上で動かすまで
WebSphere V7を Windows Azure上で動かすまでWebSphere V7を Windows Azure上で動かすまで
WebSphere V7を Windows Azure上で動かすまで
normalian
 
JAZ一周年総会 Windows Azure 直近の更新
JAZ一周年総会 Windows Azure 直近の更新JAZ一周年総会 Windows Azure 直近の更新
JAZ一周年総会 Windows Azure 直近の更新
normalian
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
normalian
 
2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~
normalian
 
CLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows AzureストレージについてCLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows Azureストレージについて
normalian
 
わんくまっちゃ445同盟 SilverlightでTdd(仮)
わんくまっちゃ445同盟 SilverlightでTdd(仮)わんくまっちゃ445同盟 SilverlightでTdd(仮)
わんくまっちゃ445同盟 SilverlightでTdd(仮)
normalian
 

Mehr von normalian (19)

エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~エンプラはつらいよ~クラウド提案時に気を付けるポイント~
エンプラはつらいよ~クラウド提案時に気を付けるポイント~
 
20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみた20140920 大分進化したメディアサービスで遊んでみた
20140920 大分進化したメディアサービスで遊んでみた
 
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL DatabaseWindows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
Windows Azure 上の WebLogic Server 12c から JPA を利用した O/R マッピング to SQL Database
 
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
Windows Azure 上で Eclipse と WebLogic Server 12c で JavaEE6 開発
 
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かすWebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
WebLogic Server 12c を Windows Azure の Windows Server 2012 R2 で動かす
 
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
バックエンドサービスに日の目を当てて愛でましょう ~メディアサービス&HDInsight編~
 
Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編Windows Azure Bootcamp メディアサービス編
Windows Azure Bootcamp メディアサービス編
 
Windows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイトWindows Azure Media Serviceで作成する割と普通な動画サイト
Windows Azure Media Serviceで作成する割と普通な動画サイト
 
WebSphere V7を Windows Azure上で動かすまで
WebSphere V7を Windows Azure上で動かすまでWebSphere V7を Windows Azure上で動かすまで
WebSphere V7を Windows Azure上で動かすまで
 
デベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LTデベロッパーサミット2012 JAZUG LT
デベロッパーサミット2012 JAZUG LT
 
SL囲む会東京5 Nodejs×Silverlightではまったこと
SL囲む会東京5 Nodejs×SilverlightではまったことSL囲む会東京5 Nodejs×Silverlightではまったこと
SL囲む会東京5 Nodejs×Silverlightではまったこと
 
JAZ一周年総会 Windows Azure 直近の更新
JAZ一周年総会 Windows Azure 直近の更新JAZ一周年総会 Windows Azure 直近の更新
JAZ一周年総会 Windows Azure 直近の更新
 
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
わんくま同盟名古屋勉強会18回目 ASP.NET MVC3を利用したHTML5な画面開発~クラウドも有るよ!~
 
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
プログラミング生放送第7回 比べてみようPaaSクラウド~Azure VS GAE~
 
2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~2010年インストールマニアックス ~Javaアプリ編~
2010年インストールマニアックス ~Javaアプリ編~
 
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
T51 jQueryで学ぶJavaScriptでのフロント開発~ASP.NET MVC3もあるよっ!~
 
T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門T35 ASP.NET MVCを使ったTDD入門
T35 ASP.NET MVCを使ったTDD入門
 
CLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows AzureストレージについてCLR/H勉強会44回目 Windows Azureストレージについて
CLR/H勉強会44回目 Windows Azureストレージについて
 
わんくまっちゃ445同盟 SilverlightでTdd(仮)
わんくまっちゃ445同盟 SilverlightでTdd(仮)わんくまっちゃ445同盟 SilverlightでTdd(仮)
わんくまっちゃ445同盟 SilverlightでTdd(仮)
 

基礎から見直す ASP.NET MVC の単体テスト自動化方法 ~ Windows Azure 関連もあるかも~