你在哪里把单元的测试,用于私人职能在C#类?

一个 维基百科的文章 建议:

  • 把测试在相同的类的成员,他们正在测试
  • 使用的分类

就个人而言,无论这些方法似乎适当的,并且我更喜欢有单元的测试设在一个单独的项目。

任何想法吗?

(我知道有一个相当数量的辩论无论是私有的方法应当进行测试。我想听到双方的论据。)

有帮助吗?

解决方案

私人方式不一定需要进行测试。你可以确定其有效性的基础上测试的公共方法,利用那些私人的方法。

然而,你应该照顾到确保公共方法可以很容易注入模型的依赖关系到你的私人方法,以便于测试和模拟所有合理的情况。

编辑: 因为你其他的测试应的位置,我建议一个单独的子目录内的项目来处理你的测试。当编写测试PHP应用程序,我有一个 测试 目录在根的我的项目,其目录的结构相同,我真的应用目录结构。在这,我有一个测试类对于每个真正的类。

只是不要编译测试的课程的其余项目时释放到生产(或在的情况下,一个语言解释如PHP,不部署的试验类的生产webserver).

其他提示

不单元的测试私方法。单元试验用于测试可见(所以公共和保护)接口的一类。私方法的实施细节,并写入单元的测试,对他们来说是不必要的(其行为应被隐含地进行测试测试的可见的方法),导致脆试验(如执行细节可能会改变)是一个障碍重构。

如果你有一个私人的方法,你觉得你需要单元的测试,这是一个很大的暗示,也许应当考虑到公共的方法在另一类。

你在哪里把单元的测试,用于私人职能在C#类?

没有出路的。他们不存在。

在一般情况下,我的单元测试是在单独的项目。

我还个人喜欢有单元的测试,在一个单独的项目。如果你想单元测试一个私人的方法,可以使私方法的内部,而不是。然后你可以让内部方法可见到您单元的测试,以直接致电通过添加以下程序集信息.cs:

[assembly: InternalsVisibleTo("MyAssembly.UnitTests")]

你应该做什么工作;这是什么对我说:

单元是一流的:这就是我要测试。没有一个方法。我试图做到面向对象的节目,所以我把我的关注对象。

如果我发现自己想要测试一个私人的方法,我需要 重构.我只是想试验一私法直接因为有太多的其他代码之间和测试,因为私人方法本身是复杂的,需要有足够的检测的注意。因此,我通常将提取类拉,私营的方法,以及其他相关成员在一个新的类。

我的课往往是相当 .他们很容易阅读和理解。我的方法,当然,也是非常小的和易于理解。

过渡到这种工作方式需要我 重新考虑 我的许多假设条件和习惯有关程序。一旦有什么似乎激进,现在似乎司空见惯。

我同意私下的方法不应该加以测试,在一般情况下,因为你只应该试验公众的接口。

这就是说,这是有原因为什么你可能会想到测试私有方法:

  1. 你是借口,你必须要开发一个复杂的私方法。创造的测试方法用于私人方法可能有必要保持你的写试验编写代码,试验周期,在正确的粒度。

  2. 你可以一个团队的一部分,其他人可能需要修改私法的,你想要测试以确保该更改不会产生问题。

一些方案:

  1. 宣布一些方法是公开的,委托给私方法,并仅用于测试目的。这些可能会例如作为前缀与TestFoo1,TestFoo2等。

  2. 使用内部

http://msdn.microsoft.com/en-us/library/7c5ka91b(VS。80).aspx

你的问题标题和第一句话是不同的。:)

我不知道在哪里安置您的测试。这将取决于语言和C#是不是我很熟悉但我想,大部分代码内的私人方法。我会感觉不舒服,如果这不是测试。代码复盖率将下降了很多。

我们利用私人访问Visual Studio测试私方法。这意味着测试类能够生活在一个单独的项目。

然而,我们尝试真正限制的数字,这是因为:

  • 一个私人的方法,可以独立的可以拉出一个公共的方法在另一类
  • 私人的方法,不要做任何特别有用的外流,可以测试通过公共的方法,类

绝对是的。私人的方法应该进行测试。和 mbunit 单元的测试框架可以访问的私人会员。

看看这博客:测试私有方法

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top