我正在尝试创建一个gradle脚本来为我的.net项目运行xunit测试用例。该脚本如下所示:
task xunitTests {
String contents = ""
FileTree tree = fileTree(dir: 'Unit Test',
includes: ['**/bin/Debug/**/[Project]*UnitTest.dll'], exclude:['**/bin/Debug/**/*[Project].dll'])
def reportDir = new File("${buildDir}",'report/xUnit')
tree.each { path ->
if (!executedDll.contains(path.name)) {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'cmd', '/c', 'packages\\xunit.runner.console.2.2.0\\tools\\xunit.console.exe \"$path\" -xml xunit.xml'
standardOutput = stdout
}
executedDll.add(path.name)
println "Output:\n$stdout"
} else {
println "Excluded already executed dll $path.name"
}
}
}
运行xunitTests任务后,我得到的输出是任务是最新的,构建成功但我没有在控制台上看到任何执行。现在,当我执行以下代码时:
task xunitTests (type:Exec) {
String contents = ""
FileTree tree = fileTree(dir: 'Unit Test',
includes: ['**/bin/Debug/**/[Project]*UnitTest.dll'], exclude:['**/bin/Debug/**/*[Project].dll'])
def reportDir = new File("${buildDir}",'report/xUnit')
tree.each { path ->
if (!executedDll.contains(path.name)) {
def stdout = new ByteArrayOutputStream()
commandLine 'cmd', '/c', 'D:\\LIS\\LIS.Encompass\\packages\\xunit.runner.console.2.2.0\\tools\\xunit.console.exe \"$path\" -xml xunit.xml'
standardOutput = stdout
executedDll.add(path.name)
println "Output:\n$stdout"
} else {
println "Excluded already executed dll $path.name"
}
}
我收到错误" execCommand == null!"。我在这里错过了什么?我只需要执行测试dll列表来获取输出xml。
答案 0 :(得分:0)
不幸的是,这完全不是它的工作方式 - read Exec类型的任务是如何工作的。可以在配置时配置commandLine
一次,这里有一些示例(我假设您可以将多个路径传递给xunit):
task xunitTests (type:Exec) {
def paths = []
def tree = fileTree(dir: 'Unit Test', includes: ['**/bin/Debug/**/[Project]*UnitTest.dll'], exclude:['**/bin/Debug/**/*[Project].dll'])
def paths = tree.files*.absolutePath
commandLine 'cmd', '/c', "D:\\LIS\\LIS.Encompass\\packages\\xunit.runner.console.2.2.0\\tools\\xunit.console.exe ${paths.join(' ')} -xml xunit.xml"
}
你可以尝试一下,不幸的是我无法测试它。
如果可以将多个路径作为参数传递给xunit,则需要创建多个任务和一个根任务(这取决于所有子任务):
task testAll
def tree = fileTree(dir: 'Unit Test', includes: ['**/bin/Debug/**/[Project]*UnitTest.dll'], exclude:['**/bin/Debug/**/*[Project].dll'])
tree.eachWithIndex { f, idx ->
task "test$idx"(type: Exec) {
commandLine 'cmd', '/c', "packages\\xunit.runner.console.2.2.0\\tools\\xunit.console.exe ${f.absolutePath} -xml xunit.xml"
}
testAll.dependsOn "test$idx"
}
现在没有输出重定向,首先是第一件事。
让我知道它是否对你有帮助。