我有几个单元测试由命令' ./ gradlew test'运行。完成后,它会生成' index.html'在build / reports文件夹中。
有没有办法在完成后自动打开?
由于
编辑:我可以使用命令
./gradlew test && start C:\\<PACKAGE>\\build\\reports\\tests\\testDebugUnitTest\\debug\\index.html
这很有效。然而。有没有办法在我的gradle文件中包含整行,以便它自动完成?
答案 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()
}
}
}
}