如何运行集成测试?

Vla*_*mir 5 java integration junit continuous-integration integration-testing

在我们的项目中,我们有大量的单元测试.它们有助于保持项目的良好测试.

除此之外,我们有一组测试,它们是单元测试,但取决于某种外部资源.我们称之为外部测试.例如,他们有时可以访问Web服务.

虽然单元测试很容易运行,但有时候集成测试无法通过:例如,由于超时错误.此外,这些测试可能需要太长时间才能运行.

目前,我们保持集成/外部单元测试只是为了在开发相应的功能时运行它们.

对于普通单元测试,我们使用TeamCity进行持续集成.

如何运行集成单元测试以及何时运行它们?

kop*_*per 5

在我们的项目中,我们有单独的常规/普通单元测试套件和单独的集成测试套件。原因有二:

  1. 性能:集成测试要慢得多,
  2. 测试脆弱性:由于与环境相关的条件(给出误报),集成测试失败的频率更高。

我们使用 TeamCity 作为主要的持续集成服务器,使用 Maven 作为构建系统。我们使用以下算法来运行测试:

  1. 我们在 Eclipse IDE 内和每次提交之前运行单元测试。
  2. 我们在每次使用 Maven 的 TeamCity 代理提交后自动运行单元测试 mvn clean install
  3. 在“主要”构建完成后,我们会在 TeamCity 代理上自动运行集成测试。

我们触发集成测试执行的方式是将 TeamCity 的 integration.tests 任务配置为依赖于“main”continous.build 任务,详情参见:http : //confluence.jetbrains.net/display/TCD4/Dependencies+Triggers

我们仅通过以下方式运行集成测试(不包括单元测试):

  • 使用名为“src/it/java”的单独目录来保存集成测试,
  • 默认情况下,从 maven-surefire-plugin 配置(配置/排除元素)中排除此源文件夹,
  • 使用名为“integration”的 Maven 配置文件来排除常规单元测试并包含来自“src/it/java”的测试(此配置文件通过在 integration.tests 任务中传递 -Pintegration 进行配置)。