我应该在Spring项目中包含系统测试吗?

时间:2011-02-16 10:22:22

标签: spring testing system-testing

My Spring网站项目包括:

  1. util classes;
  2. 存储库;
  3. 服务;
  4. 控制器。
  5. 测试如下:

    1. util类的单元测试;
    2. 使用HSQLDB对存储库进行Spring集成测试;
    3. 使用模拟存储库对服务进行单元测试;
    4. 使用模拟服务对控制器进行单元测试。
    5. 也可能有系统测试来测试整个项目的功能。它可以使用Selenium等外部工具执行,也可以使用Spring集成测试执行。

      问题是,我应该在项目中包含这样的弹簧集成系统测试,还是应该以某种方式将它们分开?

      我看到在项目中包含系统测试的两个问题: 1.他们需要配置调优,因为这样的测试不会在生产配置下运行(例如测试需要本地数据源,而不是JNDI的数据源); 2.他们不是自主的,他们需要一些外部资源等等。我不能像通常的单元测试一样运行它们。

      您如何组织系统测试?

1 个答案:

答案 0 :(得分:1)

在小项目上,我把它们放在同一个地方。在大型企业项目(例如,您可能有用地利用Spring的类型)中,我们通常在单独的包/项目中组织系统测试。这有助于将它们与主代码库分开。

如果你不这样做,就会有各种各样的诱惑从代码中重用类来“帮助”一些应该更加关注系统用户体验的东西(用户可能是另一个系统)。如果发生这种情况,您最终会在项目域类和UI之间进行耦合,这将产生不可避免的影响,需要复制大部分逻辑,这有助于使它们在实际代码库中分离。

大多数情况下,系统场景中的逻辑实际上将集中在页面,屏幕,网络呼叫等上。因此重用主项目中的代码是一个红色的鲱鱼。保持包装分开以避免这种情况发生,因为一旦你避免它发生,就没有必要将它们放在同一个地方。

但是,请确保将系统测试签入与代码相同的版本控制。

如果您还没有进行持续集成和测试/部署,那么这可能是另一个可以帮助您学习配置文件的领域。不幸的是,这个问题不会因为你在一个单独的项目中进行测试而消失。