プライベート メソッドの簡単な単体テストを作成しようとしていますが、VS2010 にメソッド スタブを自動生成させ、不足している情報を追加させます。これは私が持っているコードです。
[TestMethod()]
[DeploymentItem("MyPackage.Language.dll")]
public void getValidCultureWithValidInputCulture()
{
CultureInfo culture = new CultureInfo("sv-SE", false);
PrivateObject param0 = new PrivateObject(culture, new PrivateType(typeof(CultureInfo)));
GlobalResourceProvider_Accessor target = new GlobalResourceProvider_Accessor(param0);
CultureInfo expected = new CultureInfo("sv-SE", false);
CultureInfo actual = target.getValidCulture(culture);
Assert.AreEqual(expected, actual);
Assert.Inconclusive("Verify the correctness of this test method.");
}
これを実行すると、例外が発生します。
System.ArgumentException:
The member specified (getValidCulture) could not be found. You might need to regenerate your private accessor,
or the member may be private and defined on a base class. If the latter is true, you need to pass the type
that defines the member into PrivateObject's constructor.
ここで私が間違っていることを誰か知っていますか?私の目的は、プライベート メソッドのテストに PrivateType と PrivateObject を使用する方法を学ぶことです。
編集:
PrivateObject.Invoke を使用するつもりはありません (リファクタリングに適していません)。