「ASP.NET Web API/NUnitでユニットテストを行う」の版間の差分

編集の要約なし
 
(2人の利用者による、間の5版が非表示)
5行目: 5行目:
動作環境に依存する[[ユーザーインターフェース]]と、非依存しない[[ビジネスロジック]]という考えである。
動作環境に依存する[[ユーザーインターフェース]]と、非依存しない[[ビジネスロジック]]という考えである。


しかしならが、実際のところ猫も杓子も[[クラウドコンピューティング]]を叫ぶご時世であり、また[[オンプレミス]]の[[社内システム]]も[[スタンドアローン]]で動くものは皆無である。[[iPhone]]や[[Android]]のアプリのような[[リッチクライアント]]を用いる場合でも、核となる[[ビジネスロジック]]は[[サーバー]]上に[[Web API]]として実装される案件ばかりである。
しかしならが、実際のところ猫も杓子も[[クラウドコンピューティング]]を叫ぶご時世であり、また[[オンプレミス]]の[[社内システム]]も[[スタンドアローン]]で動くものは皆無である。[[HTML5]]はもとより、[[iPhone]]や[[Android]]のアプリのような[[リッチクライアント]]を用いる場合でも、核となる[[ビジネスロジック]]は[[サーバー]]上に[[Web API]]として実装される案件ばかりである。


そうなると[[Xamarin]]ホゲホゲを使った[[リッチクライアント]]に対向する[[ビジネスロジック]]は[[ASP.NET Web API]]を用いて記述し、[[JSON]]や[[XML]]で[[データ]]のやりとりするのがもっとも手軽な実装方法であると思われ、このような状況下では[[クライアント]]も[[サーバー]]も[[Xamarin Studio]]で一元的に開発を行えると桁違いに捗り、[[Xamarin Studio]]に統合されている[[NUnit]]が活躍すること間違い無しである。
そうなると[[Xamarin]]ホゲホゲを使った[[リッチクライアント]]に対向する[[ビジネスロジック]]は[[ASP.NET Web API]]を用いて記述し、[[JSON]]や[[XML]]で[[データ]]のやりとりするのがもっとも手軽な実装方法であると思われ、このような状況下では[[クライアント]]も[[サーバー]]も[[Xamarin Studio]]で一元的に開発を行えると桁違いに捗り、[[Xamarin Studio]]に統合されている[[NUnit]]が活躍すること間違い無しである。
12行目: 12行目:
ASP.NET Web APIのユニットテストはAPIコントローラーの各メソッドを[[NUnit]]から直接呼び出す方法が手っ取り早い。
ASP.NET Web APIのユニットテストはAPIコントローラーの各メソッドを[[NUnit]]から直接呼び出す方法が手っ取り早い。


しかしながら、[[Basic認証]]などのテストをしたい場合などもあるので、ここではインメモリサーバーを使用した方法を示す。
しかしながら、[[Basic認証]]などのテストをしたい場合などもあるので、ここではASP.NET Web APIに含まれるインメモリサーバー(HttpServerクラス)を使用した方法を示す。テスト実行のために使用しているHttpClientクラスも地味に便利なので[[NUnit]]を使わない人も[[ググって]]みるといいと思う。


===手順1===
===手順1===
空のAPS.NETプロジェクトを作成する。
空のAPS.NETプロジェクトを作成する。
*ASP.NET Web APIを[[NuGet]]から入れる


動作検証用のAPIコントローラーを作る。
(1)ASP.NET Web APIを[[NuGet]]から入れる。
 
(2)動作検証用のAPIコントローラーを作る。
: Controllers/HelloController.cs
: Controllers/HelloController.cs
<source lang="csharp">
<source lang="csharp">
39行目: 40行目:
}
}
</source>
</source>
この例のPostメソッドでは単純な1個の[[引数]]のみを想定しているが、複数個になる場合はパラメータ用のクラスを作る、もしくはNewtonsoft.Json.LinqのJTokenクラスを使うのが望ましい。[[Xamarin]]系リッチクライアントとASP.NET Web APIの組み合わせの場合は、パラメータ用のクラス群を格納する共有用のライブラリプロジェクトを作り、それぞれのプロジェクトから参照して利用することで、[[インテリセンス]]などにより変数名のタイプミスなどの発見しづらい[[バグ]]を防ぐことができる。当然ながら[[JavaScript]]などから呼ぶ場合はタイプミスを防ぐ方法はないので手軽なJTokenを使う方法でも構わないと思う。


===手順2===
===手順2===
NUnitライブラリプロジェクトを作る。
まず「NUnitライブラリプロジェクト」を作る。
*ASP.NET Web APIをNuGetから入れる
[[Xamarin Studio]]の「新しいプロジェクト」ダイアログであれば「その他」「.NET」の中にある。
*手順1のASP.NETプロジェクトを参照する
 
**プロジェクトツリーの「参照」を右クリックし参照アセンブリの編集を選ぶ
次に以下の手順を行う。
**Edit Referencesダイアログが開くので「Projects」タブを選ぶ
* このプロジェクトに[[NuGet]]からASP.NET Web APIを追加する
**ソリューション内のプロジェクトの一覧が表示されるので手順1で作ったプロジェクトにチェックを入れる
* 手順1で作成したASP.NETプロジェクトを参照する
** プロジェクトツリーの「参照」を右クリックし参照アセンブリの編集を選ぶ
** Edit Referencesダイアログが開くので「Projects」タブを選ぶ
** ソリューション内のプロジェクトの一覧が表示されるので手順1で作ったプロジェクトにチェックを入れる


===手順3===
===手順3===
222行目: 227行目:
{{stub}}
{{stub}}


[[category:.NET Framework]]
[[category: .NET Framework]]
[[category: Xamarin.Studio]]