单元测试和对象范围 - 如何测试私有/内部方法等?

Evg*_*eny 5 .net nunit unit-testing

假设我有一个类库的项目.我在该库中有一个类,这个类有一些只在类中使用的方法.像这样:

public class MyClass
{
  public void MyPublicMethod
  {
    int k

    // do something ...

    int z = MyInternalMethod(k);
    // do something else ...

  }

  internal int MyInternalMethod(int i)
  {
        // do something ...

  }
}
Run Code Online (Sandbox Code Playgroud)

现在我想为这些方法编写单元测试.我会创建一个"单元测试"项目,从中引用nunit并写下这样的东西

[TestFixture]
public class UnitTests
{
  private MyClass myClass;

  [SetUp]
  public void SetupTest
  {
    myClass = new MyClass();
  }

  [Test]
  public void TestMyInternalMethod
  {
    int z = 100;
    int k = myClass.MyInternalMethod(z); //CAN NOT DO THIS!
    Assert.AreEqual(k, 100000);
  }

  [TearDown]
  public void TearDown
  {
    myClass = null;
  }
}
Run Code Online (Sandbox Code Playgroud)

当然,由于MyInternalMethod范围,我无法做到这一点.处理这种情况的正确方法是什么?

Chr*_*sal 4

您可以使用 InternalsVisibleToAttribute 使内部结构对某些程序集可见