如何配置/运行gradle来构建和组装运行所有单元测试的发布类型

时间:2015-09-23 22:02:51

标签: android-gradle

当我跑步时

./gradlew clean assembleRelease

我的二进制文件已构建,但单元测试不会运行。

当我跑步时

./gradlew clean build

构建所有二进制文件并运行所有单元测试,两次......一次用于调试,一次用于释放。

如何才能实现'clean build'的功能,但仅限于发布buildType?

上下文:我试图解决的主要问题是配置jenkins作业以构建汇编和运行RELEASE buildType的所有单元测试的正确方法是什么。

2 个答案:

答案 0 :(得分:1)

我现在解决这个问题的方法是在项目的每个模块中将此代码块添加到build.gradle的底部:

project.tasks.assembleRelease.dependsOn {
    project.tasks.findAll { task ->
        task.name.startsWith('testRelease')
    }
}

这就是我需要它做的事情,这样当我们的jenkins服务器作业运行时:

clean assembleRelease

运行所有发布单元测试并创建工件。

不确定这是否是最好/最干净的解决方案。

答案 1 :(得分:0)

这对我有用:

// MARK: UITextViewDelegate 

func textView(textView: UITextView, shouldInteractWithURL URL: NSURL, inRange characterRange: NSRange) -> Bool {
    NSLog("Click on URL\(URL)")
    fileName = URL.absoluteString
    self.performSegueWithIdentifier("show_doc", sender: self)
    return true
}

// MARK: - Navigation

// In a storyboard-based application, you will often want to do a little preparation before navigation
override func prepareForSegue(segue: UIStoryboardSegue, sender: AnyObject?) {
    if segue.identifier == "show_doc" {
        let vc = segue.destinationViewController as! DocumentVC
        vc.fileName = self.fileName as String
    }
}

这会清除并验证(包括运行测试)所有子项目(甚至普通的java项目),然后只汇编gradlew clean check assembleRelease release,即dexing和签名只在{{{ 1}}封闭。

我不确定这是否是最干净的解决方案。尽管如此,它并没有将样板附加到buildType文件,并且比运行release任务更快。

Gradle Plugin User Guide提供了对gradle的锚定任务build.gradleclean buildassemble的良好概述。