Pages

2014/06/26

[VS2013] Private メソッドへの単体テスト実装

単体テストプロジェクトで Private メソッドへのテストを書きたい場合、方法はいくつかあるようだが、外部からアクセスできる public メソッドを書いてしまうのが手っ取り早い。
  1. クラスそのものは public である必要がある。
  2. #if DEBUG を書いておけば、デバッグ時のみ有効化される。

テスト対象クラス
using System;

namespace Sample
{
    public static class Program
    {
        static void Main(string[] args)
        {
        }
#if DEBUG
        public static string UtGetCodeName(string name) { return GetCodeName(name); }
#endif
        static string GetCodeName(string name)
        {
            if (name.Length == 0)
            {
                return null;
            }
            var r = new Random();
            return "C" + r.Next(10, 99).ToString() + name.Substring(3);
        }
    }
}
テストメソッド
[TestMethod]
public void GetCodeName_nullではないこと()
{
    Assert.IsNotNull(Sample.Program.UtGetCodeName("Daniel"));    
}
[TestMethod]
public void GetCodeName_nullになること()
{
    Assert.IsNull(Sample.Program.UtGetCodeName(""));
}
Related Posts Plugin for WordPress, Blogger...