Quantcast
Channel: C#タグが付けられた新着記事 - Qiita
Viewing all articles
Browse latest Browse all 9525

単体テストの作り方

$
0
0

 序文

 C#での単体テストコードの書き方を、体系的に整理したいと思って作成しました。ご指摘あれば遠慮なくお申し付けください。

 開発環境

  • OS: Windows10
  • IDE: Microsoft Visual Studio2019 ver16.5.1
  • フレームワーク: ASP.NET Core 3.1
  • テスト用フレームワーク: MSTest

 手順

 考え方

1. テスト対象のメソッドのうち、検証したい事項を明確化する
2. 実際にテスト対象のメソッドを呼び出して得た結果が予想通りであれば成功、失敗なら成功するまで繰り返す
3. テストコードのメソッドに戻り値や引数は基本的につけない

 書き方

1. 戻り値、引数無しのメソッドを生成する
2. 結果を予想する
3. テスト対象のメソッドを呼び出し、その結果と予想を比較する

 実例

今回テストするのはこちらのCalculationクラスのaddメソッド。

publicclassCalculation(){publicstaticintadd(inta,intb){returna+b;}}

 テストコードはこちら。

[TestClass]publicclassCalculationTest(){[TestMethod]publicstaticvoidaddTest(){intx=3;inty=5;          //予想している結果varexpected=8;     //実際の結果varactual=Calculation.add(x,y);Assert.AreEqual(expected,actual);}}

 今回検証したいのは、

  • addメソッドが予想した通りの値を返すのか?

 ということ。つまり、return a + b;の部分。
 これを検証するため、
1. CalculationTestクラスを生成、そしてその中にaddTestメソッドを生成。
2. 予想値と、Calculation.add()を呼び出して得た結果を、それぞれexpectedactualに格納。
3. Assert.AreEqual()でexpectedactualを比較。

 成功すれば完了、失敗なら原因を探ってもう一度テストを実行する。

 補足

 今回はMSTestを使いましたが、NUnitやxUnitでも基本は同じです。ただし、属性名やメソッド名が微妙に違うことに留意してください。


Viewing all articles
Browse latest Browse all 9525

Trending Articles