Android 跳过特定生成类型的测试任务

Android 跳过特定生成类型的测试任务,android,gradle,Android,Gradle,我有4种不同的构建类型: 发布 发展 嘲弄 试验 当我想为我的项目创建干净构建任务时,我看到Gradle正在使用单元测试创建干净构建 这是可以的,但是单元测试在每种构建类型下都在运行,一个干净的构建需要4倍的时间 我怎样才能使干净构建只针对发行版构建类型进行单元测试?没有好的任务可以做。所以你必须自己写 尝试在您的build.gradle旁边添加: project.afterEvaluate { // Grab all build types and product flavors

我有4种不同的构建类型:

  • 发布
  • 发展
  • 嘲弄
  • 试验
当我想为我的项目创建
干净构建
任务时,我看到Gradle正在使用单元测试创建干净构建

这是可以的,但是单元测试在每种构建类型下都在运行,一个干净的构建需要4倍的时间


我怎样才能使
干净构建
只针对发行版构建类型进行单元测试?

没有好的任务可以做。所以你必须自己写

尝试在您的
build.gradle
旁边添加:

project.afterEvaluate {
  // Grab all build types and product flavors
  def buildTypes = android.buildTypes.collect { type -> type.name }
  def productFlavors = android.productFlavors.collect { flavor -> flavor.name }

  // When no product flavors defined, use empty
  if (!productFlavors) {
    productFlavors.add('')
  }

  productFlavors.each { productFlavorName ->
    buildTypes.each { buildTypeName ->
      def sourceName
      if (!productFlavorName) {
        sourceName = "${buildTypeName}"
      } else {
        sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
      }
      def testTaskName = "test${sourceName.capitalize()}UnitTest"
      def assembleTaskName = "assemble${sourceName.capitalize()}"
      task "build${sourceName.capitalize()}"(dependsOn: ["$testTaskName", "$assembleTaskName"])
    }
  }

  task 'buildRelease'(dependsOn: tasks.findAll { t -> t.name.startsWith('build') && t.name != 'build' && t.name != 'buildNeeded' })
}

没有什么好工作要做。所以你必须自己写

尝试在您的
build.gradle
旁边添加:

project.afterEvaluate {
  // Grab all build types and product flavors
  def buildTypes = android.buildTypes.collect { type -> type.name }
  def productFlavors = android.productFlavors.collect { flavor -> flavor.name }

  // When no product flavors defined, use empty
  if (!productFlavors) {
    productFlavors.add('')
  }

  productFlavors.each { productFlavorName ->
    buildTypes.each { buildTypeName ->
      def sourceName
      if (!productFlavorName) {
        sourceName = "${buildTypeName}"
      } else {
        sourceName = "${productFlavorName}${buildTypeName.capitalize()}"
      }
      def testTaskName = "test${sourceName.capitalize()}UnitTest"
      def assembleTaskName = "assemble${sourceName.capitalize()}"
      task "build${sourceName.capitalize()}"(dependsOn: ["$testTaskName", "$assembleTaskName"])
    }
  }

  task 'buildRelease'(dependsOn: tasks.findAll { t -> t.name.startsWith('build') && t.name != 'build' && t.name != 'buildNeeded' })
}

它不起作用。我编写了错误的测试,但gradle说
构建成功
啊,等等,我听说你不想运行测试。但事实上是这样。更新的答案,请检查它不起作用。我编写了错误的测试,但gradle说
构建成功
啊,等等,我听说你不想运行测试。但事实上是这样。更新的答案,请检查