【问题标题】:C#: can't access public constructor in unit testC#:无法在单元测试中访问公共构造函数
【发布时间】:2015-02-11 20:17:42
【问题描述】:

我是 C# 新手,很困惑我无法在单元测试中访问类或其构造函数(遵循 MSDN 单元测试教程)。

我有这样的课:

namespace FooBar {

    class Foo {
        public double bar { get; set; }

        public Foo() {
            // empty constructor
        }
    }
}

我在尝试构建一个简单的单元测试时遇到的错误是 FooBar.Foo is inaccessible due to its protection levelThe type FooBar.Foo has no constructors defined.

问:这两种情况是否都是因为类在命名空间中本质上是私有的?如果是这样,我该如何测试我的公共方法?

【问题讨论】:

  • class Foo 无法访问。你没有成功public
  • 我可以对其进行测试并保持其私密性吗?
  • 嗯,不是private,而是internal。您要么必须将测试包含在同一个程序集中,要么使内部组件对您的测试程序集可见。但最终,它会更容易做到public
  • 好的,谢谢,我就这么做。

标签: c# unit-testing


【解决方案1】:

类在 C# 中默认是内部的,这意味着只有同一程序集中的其他类可以访问它们。

将 public 添加到类定义中将使您能够访问该类及其构造函数。

...
public class Foo { ...

【讨论】:

  • 在没有修饰符的情况下,默认情况下说类是内部的会更正确。
  • 啊,谢谢——我把措辞更正了。
猜你喜欢
  • 1970-01-01
  • 2018-08-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多