如何在每个 pull-request 中进行 运行 特定测试?

How to run specific tests at each pull-request?

假设我们有超过 1500 个测试,并且在 pull-request 合并到 master 分支之前我们有一个测试管道总是 运行s测试,所有测试需要 45 分钟以上才能得到 运行。其中一些测试没有必要 运行 一次又一次,其中一些应该 运行.

我们是否有解决方案来指定哪些测试应该 运行 在哪个拉取请求中,哪些测试不应该 运行 在特定的拉取请求中,或者我应该这样问.我们能以某种方式定义一个过滤器来指定哪些测试应该在 [X] 拉取请求中获得 运行 吗?

您应该能够将 phpunit 配置为 运行 特定分支的特定测试,例如,在下面的配置中,phpunit 将 运行 master 分支的所有测试,并且 运行 仅匹配 feature/* glob 模式的任何分支的测试子集:

pipelines:
  default:
    - step:
        name: Run all tests
        script:
          - phpunit mydir
  branches:
    master:
      - step:
          name: Run all tests
          script:
            - phpunit mydir
    'feature/*':
      - step:
          name: Run only MyTest test class
          script:
            - phpunit --filter MyTest

或者,您应该能够根据 BITBUCKET_BRANCH environment variable:

来决定 运行 哪个测试
pipelines:
  default:
    - step:
        name: Run test that match the name of the branch
        script:
          - phpunit --filter "${BITBUCKET_BRANCH}"