构建单元测试组件的最佳方法是什么?

时间:2009-08-17 15:22:07

标签: .net unit-testing tdd

我想优化我的单元测试组件。具体来说,我想确保多个开发人员可以同时工作而不会踩到彼此的脚趾。创建单元测试时的最佳做法是什么?每个真实课程一个单元测试课程,单元测试由关注而不是课程分解,所有课程的一个大单元测试课程(我怀疑)等等。

4 个答案:

答案 0 :(得分:2)

我喜欢java中类约定的一个测试类。这可以确保您始终知道在哪里找到测试,并且测试单元足够小,可以让很多人使用它们而不需要太多合并,因为它们都在一个文件中。

如果你有一个相当大的测试套件并且你正在密切关注这一个类,它还使你能够只运行一个类的测试。

答案 1 :(得分:1)

有树可能的方法来组织单元测试:

  1. 每个测试类的测试类中的TestMethod。最受欢迎的一个。
  2. 每个测试夹具的测试类中的TestMethod。允许最小化文本夹具/拆卸代码。
  3. 每个受测试系统的测试类中的TestMethod(子系统,模块,几个类)。
  4. 通常需要保留多个自动化测试程序集:

    • 单元测试装配 - 使用纯单元测试,即使用模拟测试转储来测试每个单元。
    • 集成/消费者测试程序集 - 用于检查系统单元的集成,检查消费者关键功能是否正常工作。

答案 2 :(得分:0)

我认为最好的方法是区分行为。每个测试类的一种行为。这意味着每个类的几个测试类。可以找到与示例相关的问题here

答案 3 :(得分:0)

我倾向于采用的方法是单元测试的上下文规范风格,将单元测试分解为行为分组;例如,如果我正在为一个名为作业状态页面的网站开发一个新的ASP.NET网页,我将有一个这样的目录结构:

unit-tests -> spec_for_job_status_page

其中spec_for_job_status_page是包含解决方案文件,csproj文件和相关类的文件夹。

就单元测试类的结构而言,我喜欢使用遵循上下文规范样式的命名约定,例如:

namespace spec_for_job_status_page
{
    [TestFixture]
    public class when_the_job_status_page_is_loaded
    {
        [SetUp]
        public void context()
        {
            //write set-up code here for your test
        }

        [Test]
        public void should_show_the_job_number()
        {
            //write the assertion code here.  Should be a single line
        }
    }
}