c# - 所有测试私有(private)方法的方法似乎都失败了 (c#)

标签 c# visual-studio-2010 unit-testing

我想用几个非常基本的私有(private)(非静态)方法测试这个类,但是......我似乎无法让它工作。

下面的代码一直给我以下异常:

System.MissingMethodException: Method 'GeneratorStandard.GetNumber' not found.

测试看起来像这样:

    [TestMethod]
    public void GetNumber01()
    {
        var list = GetList();

        var generator = new GeneratorStandard();
        var privateObject = new PrivateObject(generator, new  PrivateType(typeof(Generator)));

        int result = (int)privateObject.Invoke("GetNumber", list);


        Assert.AreEqual(2, result);
    }

Generator是包含方法的抽象基类,GeneratorStandard是继承Generator的实现类。

我也尝试过在 VS2010 中使用“创建私有(private)访问器”按钮,但是它只创建了一个测试引用文件,而不是一个实际的影子类……所以这不起作用。

请帮忙:)

最佳答案

如果来自抽象“基”类的方法必须可以通过从抽象类继承的类型访问,它们应该(至少)标记为protected,而不是private

public abstract class MyClassBase {
   private void DoThis(){}
   protected void DoThat(){}
}

public class MyImplemntation : MyClassBase {

  //I don't know DoThis();
  //I know DoThat();
}

关于c# - 所有测试私有(private)方法的方法似乎都失败了 (c#),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16815430/

相关文章:

c# - 如何在 C# 代码中获取数据库表列表(以独立于供应商的方式)?

c++ - VS2010 C++连接mysql出现链接错误

c# - 用于自定义项目的 C DLL

java - 如何使 Spring testcontext 框架使用多个数据源?

AngularJS "No pending request to flush",同时使用 $resource 对 Controller 进行单元测试

c# - 在 C# 中的 IAsyncEnumerable 线程安全中增加一个整数吗?

c# - 为 Swagger 的 multipart/form-data 中的文件指定内容类型

c# - 需要 Windows 上 Mono 3.0 的配置文件

sql - 正则表达式匹配常见的 SQL 语法?

C# 创建 2 行,第一行是 TextView 列表,第二行是组合框列表