VisualStudio - 当基类在另一个程序集中时,如何自动为基类函数创建访问器?

时间:2013-01-23 12:40:22

标签: c# unit-testing vs-unit-testing-framework

我有以下设置。 3项目的解决方案。

项目A,命名空间A,A类

项目B,命名空间B,B类:A

和B上的单元测试的测试项目。要访问B的私有函数,我使用 Create Private Accessor - >在我的Test项目中创建一个访问器。测试

似乎A在另一个程序集中VS不为A创建访问器函数。

1 个答案:

答案 0 :(得分:1)

您需要使用多个访问者。考虑一下:

// 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);
}