如何使用jenkins管道运行特定的测试或类

如何使用jenkins管道运行特定的测试或类,jenkins,testing,parameters,jenkins-pipeline,Jenkins,Testing,Parameters,Jenkins Pipeline,我正在使用此命令运行测试: sh "${mvnHome}/bin/mvn clean test -e -Dgroups=categories.dbd" 但有时我想运行一个特定的测试。我怎么做 我读到我可以使用“这个项目是参数化的”,但不知道如何使用它 我也看到了这一点,但这还不够好,因为它需要一个外部文件 詹金斯并不是真正的工具。这是我们运行所有测试的典型用例。如果您真的只想运行一个测试,那么应该在开发环境中运行 但是最简单的方法是,如果你想要其中一个测试的结果,我们让Je

我正在使用此命令运行测试:

sh "${mvnHome}/bin/mvn clean test -e -Dgroups=categories.dbd"
但有时我想运行一个特定的测试。我怎么做

我读到我可以使用“这个项目是参数化的”,但不知道如何使用它

我也看到了这一点,但这还不够好,因为它需要一个外部文件


詹金斯并不是真正的工具。这是我们运行所有测试的典型用例。如果您真的只想运行一个测试,那么应该在开发环境中运行

但是最简单的方法是,如果你想要其中一个测试的结果,我们让Jenkins运行你所有的测试,而忽略其他测试的结果

通常,您应该在开发环境中运行(快速、廉价)单元测试,并且只有在代码通过单元测试后,才提交Jenkins进行(昂贵、缓慢)集成测试的代码(Jenkins应该再次运行单元测试,以防万一)

我怀疑您真正的问题是“如何调试Jenkins运行的集成测试的失败”。Jenkins是一个构建和测试工具,而不是调试工具。它本身不是调试测试失败的合适工具。但是使用Jenkins的方式可以帮助调试

  • 不要使用集成测试代替单元测试
  • 如果您的软件未能通过集成测试,但没有单元测试,那么与调试测试失败一样,您应该假设软件中可能导致失败的缺陷类型。然后检查是否可以添加一个单元测试来检测这种缺陷。如果是,则添加该单元测试
  • 确保您的测试在出现故障时生成有用的诊断消息。测试断言应该有有用的消息。测试a应该有描述性名称
  • 如果集成测试检查一系列操作,请确保您还对各个操作进行了测试
如果您使用

sh "${mvnHome}/bin/mvn clean test -e -Dgroups=categories.dbd -Dtest=com.example.MyJavaTestClass"

我建议在管道定义中添加测试类/方法的参数

pipeline {

  agent any

  parameters {
    string defaultValue: '', description: 'Test Name', name: 'TEST_NAME', trim: false
  }

  stages {
    stage('run tests') {
      steps {
        script {
          def optionalParameters = ""
          if (params.TEST_NAME != null) {
            optionalParameters += " -Dtest=" + params.TEST_NAME
          }
          sh "${mvnHome}/bin/mvn clean test -e -Dgroups=categories.dbd" + optionalParameters
        }
      }
    }
    ...
  }
  ...
}

詹金斯并不是真正的工具。这是我们运行所有测试的典型用例。如果你只想运行一个测试,你应该在你的开发环境中运行。但是在我的本地环境中运行测试和在Jenkins服务器上运行测试是有区别的。那具体的课程呢?为什么?这没有任何意义。我的工作时间可以超过1小时,这次我不想再等了……谢谢。我应该在哪里设置测试名称?不客气。我编辑了我的答案,并提供了一个完整的管道定义。
pipeline {

  agent any

  parameters {
    string defaultValue: '', description: 'Test Name', name: 'TEST_NAME', trim: false
  }

  stages {
    stage('run tests') {
      steps {
        script {
          def optionalParameters = ""
          if (params.TEST_NAME != null) {
            optionalParameters += " -Dtest=" + params.TEST_NAME
          }
          sh "${mvnHome}/bin/mvn clean test -e -Dgroups=categories.dbd" + optionalParameters
        }
      }
    }
    ...
  }
  ...
}