Ant*_*yrd 1 c# unit-testing .net-4.0
我正在尝试将我的私有方法暴露给单元测试.我在UnitTesting Succintly中看到了这个例子:
public class DoesSomething
{
#if TEST
public
#else
private
#endif
void SomeComputation() {
}
}
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的,但在尝试通过测试访问时,代码仍然显示为私有.
#if TEST
public
#else
private
#endif
Organization TransformToOrganization(OrgChartOrganizationUnitType org)
{
...
}
Run Code Online (Sandbox Code Playgroud)
jas*_*son 14
您不应该将私有方法公开给您的测试.你的类的公共方法有一个规范.您的单元测试应该测试您的类的公共方法是否符合该规范.如何在公共的方法去这样做是没有人的业务; 只要您继续遵守公共方法的规范,您希望随意更改您的私有实现.
如果您编写依赖于私有实现的单元测试,您最终会得到非常脆弱的单元测试,这些测试实际上不会添加任何值,因为您需要验证的唯一事情是公开的成员遵守他们的规范.如果在背景中隐藏着小小的小猫,整个过程都会起作用,那也没关系.