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

标签 spring testing system-testing

我的 Spring web 项目包括:

  1. 实用类;
  2. 存储库;
  3. 服务;
  4. 控制者。

测试如下:

  1. 实用类的单元测试;
  2. 使用 HSQLDB 对存储库进行 spring 集成测试;
  3. 使用模拟存储库对服务进行单元测试;
  4. 使用模拟服务对 Controller 进行单元测试。

也可能有系统测试来测试整个项目的功能。它可以使用 Selenium 等外部工具执行,也可以使用 Spring 集成测试执行。

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

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

您如何组织系统测试?

最佳答案

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

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

大多数情况下,系统场景中的逻辑实际上将集中在页面、屏幕、网络调用等方面,因此重用主项目中的代码是一种转移注意力的行为。将包分开放置以避免这种情况发生,因为一旦避免这种情况发生,就没有必要将它们放在同一个地方。

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

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

关于spring - 我应该在 Spring 项目中包含系统测试吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5015189/

相关文章:

java - Spring 安全 : Java Config: How to add the method type?

spring - 在 Spring 3.0 中使用 jdbcTemplate 时出现空指针异常

android - 如何在不先发布或签名的情况下轻松测试应用内购买?

java - Tomcat 8 startup.bat 未运行(直接运行)但在 Eclipse JAVA_HOME 路径中工作是正确的

spring - 如何使用 spring 数据和基于 java 的配置创建 ddl 文件?

python - 如果我将数据库连接存储在 flask.g 对象上,如何让 Flask 连接到我的测试数据库?

jquery 测试 - 暂停 DOM?

python - 黑盒测试时的结果执行和呈现

python - python中好的自动化系统测试框架

php - 编码完成后测试PHP项目