おーみんだよ。

おーみんだよ。

プログラミング、Unityなどのアウトプットを主に行っています。

【C#】Visual Studioで単体テストのコードを書く!

f:id:bookreadkun:20190531145550p:plain

 

おはようございます。おーみん(@Ooooooomin_365)です。

 

先日、初めてVisual Studioで単体テストなるテストコードというものを書いてみました。

 

テストコードというのは、自分がアプリを作る際に書いたコードのメソッドが正しく動作しているかをチェックするコードのことです。

 

備忘録として、今回の記事ではテストコードについてまとめていこうと思います。

 

単体テストのコードを書く!

それでは環境とコードについてまとめていきましょう。

 

環境

  • Windows 10
  • Visual Studio 2019
  • .NET Framework 4.7.2

 

コードの書き方

テストコードの書き方については僕が以前制作したダイエット管理アプリのコードを例に書いていこうと思います。

 

たくさん書き過ぎても仕方がないのでstring型とdouble型のテストコードの2つをチェックしていきましょう!

 

まずはstring型。

f:id:bookreadkun:20190531151216p:plain

 

これは身長をstring型で返す関数です。(なぜ身長をstring型で返してるんだwという気持ちがあると思いますが、これは色々理由があるので今回はスルーしてくださいw)

 

これのテストコードは以下になります。

f:id:bookreadkun:20190531151406p:plain

 

105行目でクラスのインスタンスを生成し、106行目でYourHeight関数を実行しています。

 

108行目のAssert.AreEqual関数ですが、これはAssert.AreEqual(理想の値, 実際に関数を実行したときの値) という仕組みになっており、この「理想の値」と「実際に関数を実行したときの値」が等しくなればこのテストは成功したことになります(実際に上記掲載のテストコードは成功します)。

 

 

続いてdouble型。

f:id:bookreadkun:20190531152103p:plain

 

これは理想の体重まで何kgか?という関数ですが、まあ今はそんなのはどうでも良いでしょうw

 

単純に二つのdouble型の数字「NowWeight」と「IdealWeight」の差を返す関数と見なしてください。

 

これのテストコードは以下になります。

f:id:bookreadkun:20190531152354p:plain

 

97行目までは先程のstring型のテストと変わりはありませんが、99行目のAssert.AreEqualの引数が3つになっていますね。

 

これは以下のような仕組みになっています。

Assert.AreEqual(理想の値, 実際に関数を実行したときの値, 許容する誤差範囲

 

先程の内容に「許容する誤差範囲」が加わっていますね。

これはdouble型の数字だと計算する数値によって少数点以下の桁が変わり、正確に値が一致しないときも出てくるからです。よって適当な許容範囲を設定しています(上のプログラムだと0.01)。

※範囲の決め方は色々とありますが、ここでは記事の内容とずれてしまうので割愛したいと思います。

 

以上でAssert.AreEqual関数を実行したときに「理想の値」と「実際に関数を実行したときの値」の差が「許容する誤差範囲」内だったらこのテストは成功します

 

最後に

今回初めてテストコードを書いたのですが、これを書くことで元のプログラムのメソッドを細かく分ける癖がつくので今後も活用していかなきゃですね。

意識しないとどうしても面倒な気持ちになってワーッとゴチャゴチャなメソッドを書いてしまうのでw(;^_^A

 

 

記事内ではソースコードの一部しか載せていませんが、Githubにて全てのコードを載せていますので気になる方がいらっしゃいましたらぜひ以下からどうぞ~!

github.com