2017でC#で開発してる開発者で、開発時にMSTestを使って単体テストを作成したり、コードを書くときにTDDしたりは、すっかり開発風景に定着していると思います。Community版で、単体テストしたり、TDDするための環境の構築の作り方をまとめたいと思います。いちおう今回の作成環境を載せておきます。どのバージョンでもほぼ同じなのであんまり関係ないですが念のため。4.6.2まずはソリューションとプロジェクトの作成するまず、ソリューションを作成します。Framework)を選択し、ソリューションの名前を「UnitTest.Sample」、プロジェクト名を「UnitTest.Target」とします。単体テストプロジェクトの追加する次に単体テストプロジェクトを追加します。プロジェクト」を選択し、名前を、「UnitTest」として[OK]を押します。新規プロジェクトがソリューションに追加されていると思います。初期状態ではUnitTest1.csが配置されています。ファイルを開くと1つだけ空のテストが配置されています。表示できます)を確認すると記述したテストの一覧が確認できます。最後にプロジェクトの参照からテスト対象プロジェクトを追加しておきます。ないとテスト対象のプロジェクトが見えません。テスト対象がある、UnitTest.Targetにチェックを入れて[OK]を選択します。テストを記述する、TDDを始める仕様ですが、「文字列2つを入力して、数字なら各々を足して返却値を文字列で応答する」プログラムを作成したいと思います。TDDはおおむね、「実装より先にテストを作る」、「存在しない操作のテストを書く」ことが先にきて「メソッドの中身を実装する」はテストを作った後に行います。「頻繁にテストを実行する」の行為を含みます。前述の通り、この時点ではクラスも操作も無いのです。できたらいいなと考えながらやりたいことを記述し、最後に結果があっているかどうかを確認するためアサーションで結果の確認を書いていきます。生成する」を選択します。自動でファイルの末尾にクラスが追加されます。次はAddにエラーが出るので同じく、電球マークを選択し、メソッドを生成しますを選択してメソッドを自動で追加します。この時、アクセス修飾子はpublicに変えておきましょう。(引数の名前は、自動で適当な名前が付与されるので後で自分の好きなようにで変更してください)次に、動作を確認するために、TestMethod1()のスコープの中で、右クリックからコンテキストメニューを呼び出して、「テストの実行」を選択します。エクスプローラー」上に表示されます。次に、メソッドの中身を実装します。ついでに、当然予想される使用で、「もし引数が数字じゃない場合、例外を発生させる」の仕様とテストも追加します。自動生成したクラスを、UnitText.Targetプロジェクトに移動します。ここは自動ではやってくれないので手作業で行います。UnitTest.Target;」を選択してエラーを訂正します。例外を確認するためにテストに以下を追加します。[ExpectedException(typeof(ArgumentException))]という属性を追加することで、メソッドから例外が発生する旨をテスト項目として追加できます。ans);}ここまで追記したら、テストエクスプローラか「すべて実行」を選択します。全て処理が成功して、グリーンな状態になると思います。以上を繰り返しながら、「テストを先に作成」してから「中身は後から実装する」ことで、「後から動作を検証できる」し「使い手の立場に立った操作の提供」が「効率的」に実装できるようになると思います。基本的にテストメソッドのやり方はMSDNの単体テストの基本というページに記載されていますが、しょっちゅうアドレスが変わってリンク切れになるので中身を一部抜粋したいと思います。実行時間を指定する(タイムアウトを指定する)以下の通り指定すると、指定ミリ秒以上実行時間がかかるとテストが失敗します。ミリ秒指定で時間を指定します。基本的にAssertクラスのメソッドに予想される結果と、実際のオブジェクトの値を設定して結果を確認していきます。成否が紛らわしいので、分からなくなったらMSDNを参照したほうがいいかもしれません。呼ぶとテストが必ず失敗するAssert.Fail("メッセージ");テスト前準備、後処理テストクラス内のテストを開始する前や後に実行したい処理がある場合、以下をテストクラス内に指定します。}}アセンブリ単位(つまりテストプロジェクト内のテスト)が開始される前や後に実行したい処理がある場合以下をテストクラス内に指定します。どこに指定してもクラス内をテスト開始ませに検索して実行してくれるので記述場所は問いません。}}簡単でしたが、単体テストとTDDの説明は以上となります。»Profile受託ソフト会社員でWin系業務屋。趣味でCocos2d-x/C++を触っています。etc...主に受託・開発ネタ、Windowsの事、Srellaris、ゲーム制作の進捗の事を喋ります。ArticleC#で2次元配列を管理するクラスを作成する【C#】2次元配列から2次元配列を切り出すC#でオブジェクト初期化子を使った時の丸カッコの有無DOTweenのアニメーションをTimeLineでプレビューするC#の配列をインデックス付きforeachするスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。