c# - 隐藏类 - 但无法进行单元测试

标签 c# oop unit-testing

我正在使用 Visual Studio 2010 在 C# 中编写一个项目,但想使用 NUnit 进行单元测试。

我是 oop 的新手,但我尝试尽可能地隐藏信息并仅公开所需的最少接口(interface)。这意味着我有几个完全在库内部的类 - 它们可以处理一些内部状态,而用户只需要知道几个提供接口(interface)的公共(public)类。

这似乎尽可能地隐藏起来,为用户提供一个最小的界面。

但是,如果我想进行单元测试,我找不到测试这些类的方法。所以我的问题是什么是最佳实践?纯粹为了单元测试而不得不公开它们似乎是一种耻辱......或者是否有更好的工具来完成这项工作?

这似乎是在尽可能多地封装和公开尽可能多的方法之间进行权衡以允许对它们进行测试——当然,单元测试最好测试内部工作,让集成测试测试公共(public)接口(interface)?

--

我知道通常情况下,您只会担心对公共(public)接口(interface)进行单元测试,但在这种情况下,这会导致很多非常复杂的测试 - 将所有内容分解成小块进行测试肯定更好?

最佳答案

我不会讨论测试内部类是否有意义,但您可以使用 InternalsVisibleTo 实现您想要的。属性

将以下内容添加到您的图书馆:

[assembly:InternalsVisibleTo("MyTest")]

并且所有内部类都可以从 MyTest.dll

访问

关于c# - 隐藏类 - 但无法进行单元测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18275131/

相关文章:

java - 弃用一组相关方法的最佳做法是什么?

java - 为 Android 单元测试模拟 WifiManager

c# - MSTest 中的 runsettings 和 testsettings 到底有什么区别

javascript - 构造函数之后的类内部的这个范围

c# - 检测PDF文件是否正确(标题PDF)

c# - 如何将大量数据写入文件?

c# - 通过反射获取当前的MethodBase

php - 如何避免到处传递上下文对象?

django - 使用 Factory Boy 伪造 JSONField

c# - 为什么这个函数更快,为什么它的多个枚举比第一个更快?