[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(""));
}

このブログの人気の投稿

Excel で入力した文字に勝手に取り消し線が入る

コピーした行の挿入が表示されない時はフィルタされていないかチェック