Android studio:自动打开由' ./ gradlew test'生成的html测试结果文件。

时间:2017-07-14 14:08:28

标签: android android-studio gradle

我有几个单元测试由命令' ./ gradlew test'运行。完成后,它会生成' index.html'在build / reports文件夹中。

有没有办法在完成后自动打开?

由于

编辑:我可以使用命令

./gradlew test && start C:\\<PACKAGE>\\build\\reports\\tests\\testDebugUnitTest\\debug\\index.html

这很有效。然而。有没有办法在我的gradle文件中包含整行,以便它自动完成?

2 个答案:

答案 0 :(得分:1)

在您的项目build.gradle中,您可以添加此任务:

task testAndOpen(type: Exec) {
    //execute test task first
    dependsOn 'test'
    //set the base dir
    workingDir './build/reports/tests/testDebugUnitTest/debug'
    //launch cmd and open the file with the default associated program
    commandLine 'cmd', '/c', 'start index.html'
}

然后从终端你可以.\gradlew testAndOpen

如果你不在Windows上,你可以用一些不同的命令做类似的事情。这是&#34;肮脏和快速&#34;因为路径文件夹必须手动更改为不同的口味,但它是一个很好的起点。

答案 1 :(得分:0)

该任务将打开文件夹MyProject/mymodule/build/reports/tests中的所有测试报告

只需将代码添加到mymodule/build.gradle

并在终端中执行:

./gradlew app:testDebugUnitTest --tests com.examplepackage.* testOpenTestReport
task testOpenTestReport(group: "verification") {
    doLast{
        File reportsDir = new File("${project.buildDir.path}/reports/tests")
        if (!reportsDir.exists() || !reportsDir.isDirectory()) {
            println "reportsDir ${reportsDir.absolutePath} not exist"
            return null
        }

        fileTree(reportsDir)
                .filter { it.isFile() }
                .files
                .findAll { (it.name == "index.html") }
                .forEach{file->
                    println "${file.absolutePath}"
                    //launch cmd and open the file with the default associated program
                    if (System.getProperty('os.name').toLowerCase(Locale.ROOT).contains('windows')) {
                        println "start ${file.absolutePath}".execute().text.trim()
                    } else {
                        println "sensible-browser ${file.absolutePath}".execute().text.trim()
                    }
                }
    }
}