2009-08-17 88 views
1

我想优化我的单元测试程序集。具体而言,我想确保多个开发人员可以同时工作,而不必踩在彼此的脚趾上。创建单元测试时的最佳做法是什么?一个单元测试类每个真实类,单元测试按关注而不是按类分解,一个大单元测试类对于所有类(我怀疑它)等等。构建单元测试程序集的最佳方法是什么?

回答

1

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

  1. TestMethod的每测试类测试类。最受欢迎的一个。
  2. TestMethod in test class per test fixture。允许最小化文本夹具/拆卸代码。
  3. TestMethod在每个被测系统的测试类中(子系统,模块,几个类)。

一般有需要保持若干自动化测试组件:

  • 单元测试装配 - 用纯单元测试,即测试用嘲笑每个单元测试转储。
  • 集成/消费者测试组件 - 旨在检查系统单元的集成,检查消费者关键功能是否正常工作。
2

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

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

0

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

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 
     } 
    } 
} 
相关问题