隐藏课程 - 但无法进行单元测试

Mar*_*ark 3 c# oop unit-testing

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

我对oop很新,但试图尽可能地隐藏信息,只暴露所需的最少接口.这意味着我有几个完全在库内部的类 - 它们可以处理一些内部状态,而用户只需要知道几个提供接口的公共类.

这似乎尽可能地隐藏,为用户提供最小的界面.

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

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

-

我意识到通常情况下,你只会担心单元测试公共接口,但在这种情况下会导致很多非常复杂的测试 - 将所有内容分解成小块进行测试肯定会更好吗?

Zde*_*vic 5

我不会讨论是否有必要测试内部类,但是你可以使用InternalsVisibleTo属性来实现

将以下内容添加到您的库:

[assembly:InternalsVisibleTo("MyTest")]
Run Code Online (Sandbox Code Playgroud)

所有内部课程都可以从中访问 MyTest.dll