Nunit测试 - 测试公共方法调用的私有方法代码的一部分

时间:2017-03-13 05:34:15

标签: nunit private-methods

我试图用私有方法测试一段代码(方法A)。在流程中,这个私有方法由公共方法调用。 为了在方法A中测试此代码,它从另一个私有方法(方法B)返回数据

public returntype MyTest()
{
  this.methodA();
}

private returntype methodA()
{
 rep = this.methodB(some paramethers);
// code to be tested using rep
}

private returntype methodB()
{
//some code
}

如何测试此代码?

2 个答案:

答案 0 :(得分:1)

Andreasnico的回答是对测试哲学的陈述 - 我经常同意的一个。但问题是如何操作,所以我将以这种方式回答它,然后再回到哲学部分。

显然,如果你的方法是私有的,你就不能调用它(除了反射,在我看来这有点傻)。最简单的方法是将其公之于众,并在其前面贴上评论,说明“公开仅供测试!”您的编码标准或面向对象的观点可能会告诉您不要这样做,但请记住,一些早期的单元测试框架是使用没有可见性修饰符的语言开发的,并且在没有它们的情况下相处得很好。对于普通(非金融)商业应用程序,我认为这样做没有坏处。

第二个最简单的方法是使方法成为内部并使内部对测试程序集可见。对于NUnit自己的测试,这就是我们现在正在做的事情,尽管我们有很多使用第一种方法的遗留代码。

<理念> 对于白盒与黑盒单元测试的扩展讨论,这不是一个好地方。 NUnit(和其他框架)最初是由开发人员创建的,他们正在测试他们设计的实现。所以测试直接进入了肮脏的细节。如果您是开发人员 - 而不是测试人员 - 那么进行这种测试并没有错。事实上,如果你想以尽可能小的步骤做TDD,那就是你必须要做的。 IMO非常重要的是,你知道你在任何时候都在做什么。一个好的测试套件通常会有两种测试。 < /理念>

答案 1 :(得分:0)

私有方法只是实现细节,因此所有功能都应该通过公共接口进行测试。在你的情况下通过" MyTest"方法