単体テストプロジェクトで Private メソッドへのテストを書きたい場合、方法はいくつかあるようだが、外部からアクセスできる public メソッドを書いてしまうのが手っ取り早い。
テスト対象クラス
- クラスそのものは public である必要がある。
- #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(""));
}