私は次の設定をしています。3 つのプロジェクトによるソリューション。
プロジェクト A、名前空間 A、クラス A
プロジェクト B、名前空間 B、クラス B : A
B の単体テスト用の Test プロジェクト。 B のプライベート関数にアクセスするには、Create Private Accessor -> Testを使用して Test プロジェクトにアクセサーを作成します。
A は別のアセンブリにあるようです VS は A のアクセサ関数を作成しません。
私は次の設定をしています。3 つのプロジェクトによるソリューション。
プロジェクト A、名前空間 A、クラス A
プロジェクト B、名前空間 B、クラス B : A
B の単体テスト用の Test プロジェクト。 B のプライベート関数にアクセスするには、Create Private Accessor -> Testを使用して Test プロジェクトにアクセサーを作成します。
A は別のアセンブリにあるようです VS は A のアクセサ関数を作成しません。
複数のアクセサーを使用する必要があります。このことを考慮:
// Assembly A
public class ClassA
{
protected int someInt = 1;
private void DoSthmWithA()
{
someInt = 10;
}
}
// Assembly B
public class ClassB : ClassA
{
private void DoSthmWithB()
{
someInt = 11;
}
}
[TestMethod()]
public void Testing
{
var target = new ClassB();
var poA = new PrivateObject(target, new PrivateType(typeof (ClassA)));
var poB = new PrivateObject(target);
var accA = new ClassA_Accessor(poA);
var accB = new ClassB_Accessor(poB);
accA.DoSthmWithA();
Assert.AreEqual(accA.someInt, 10);
accB.DoSthmWithB();
Assert.AreEqual(accA.someInt, 11);
}
また
[TestMethod()]
public void Testing
{
var target = new ClassB();
var poA = new PrivateObject(target, new PrivateType(typeof(ClassA)));
var poB = new PrivateObject(target);
poA.Invoke("DoSthmWithA");
var accA = new ClassA_Accessor(poA);
Assert.AreEqual(accA.someInt, 10);
poB.Invoke("DoSthmWithB");
Assert.AreEqual(accA.someInt, 11);
}