我试图创建一个gradle脚本来运行我的xunit测试用例。net项目。脚本如下所示:
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。
不幸的是,这完全不是它的工作方式——请阅读Exec类型的任务是如何工作的<代码>命令行可以在配置时配置一次,下面是一个小示例(我假设您可以将多个路径传递给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"
}
现在没有输出重定向,首先要做的事情。
如果对你有帮助,请告诉我。
我的Gradle项目使用了KotlinDSL和JUnit5/Jupiter(以及Kotlin作为编程语言),Gradle似乎没有正确地接受我的任何测试。当我在命令行上运行Gradle测试时,它告诉我 不管我怎么尝试。然而,在我的IDE中,我可以轻松地运行项目中的每个单个测试类,而不会出现任何问题。
我有一个 xUnit.net 测试,如下所示: VS 2012的xUnit插件表示: 未找到要运行的测试。 TestDriven.net运行良好,但提到了一些关于特设: 1通过,0失败,0跳过(请参阅“任务列表”),这花费了0.47秒(临时) TeamCity、和和Visual Studio也找不到 (我已经安装了,VS看到了一些测试。) 什么原因?
问题内容: 我有一个PHP脚本,需要确定它是通过命令行还是通过HTTP执行的,主要是出于输出格式化的目的。这样做的规范方法是什么?我以为是要检查的,但事实证明,即使使用“ Apache 2.0 Handler”服务器API时,它也已被填充。 问题答案: 使用功能。 以下是文档中的一些相关说明: php_sapi_name —返回Web服务器和PHP之间的接口类型 尽管不完整,但可能的返回值包括ao
问题内容: 我前一段时间读过这篇文章,但似乎找不到。我试图找到一个将在终端中执行命令然后输出结果的命令。 例如:脚本将是: 它将在终端中运行该命令的结果 问题答案: 做这件事有很多种方法: 一种简单的方法是使用os模块: 子流程模块可以实现更复杂的事情:例如:
这是我的第一个JMH基准测试。我可能做错了一切,但是... 我的基准看起来是这样的 是我开始的...等了又等,然后杀了它。我怀疑在< code>@Setup中有问题,所以我简化了它,但是什么都没有改变。这场赛跑开始时相当乐观... 然后什么都没发生。过了很长时间,它继续写下20行像 和5行像 然后它输出一些结果 并更正其估计的eta: 我的是否比我想象的更频繁地被调用,或者还有什么其他原因导致了缓