我在Hudson构建后运行Selenium单元测试,并希望将其用于监视我的网站功能。
当构建成功时(这应该始终如此,因为它只包含单元测试),即使某些测试失败,Hudson也不会发送电子邮件。
使用email-ext,我可以在变得不稳定时发送电子邮件,但由于浏览器单元测试有些不稳定,我不希望在第一次失败时就发送电子邮件,而是更像连续3次失败或最近x分钟/运行的80%之类的内容。
最好根据测试名称或测试中定义的某些内容来基于规则集进行配置,以标记其为相关内容。
我在Hudson构建后运行Selenium单元测试,并希望将其用于监视我的网站功能。
当构建成功时(这应该始终如此,因为它只包含单元测试),即使某些测试失败,Hudson也不会发送电子邮件。
使用email-ext,我可以在变得不稳定时发送电子邮件,但由于浏览器单元测试有些不稳定,我不希望在第一次失败时就发送电子邮件,而是更像连续3次失败或最近x分钟/运行的80%之类的内容。
最好根据测试名称或测试中定义的某些内容来基于规则集进行配置,以标记其为相关内容。
-Dmaven.test.failure.ignore=false
然后,如果测试失败,Hudson将使您的构建失败。
使用email-ext,当构建变得不稳定时,我可以发送电子邮件,但由于浏览器单元测试有些不稳定,因此我不希望它们在第一次失败时就发送邮件,而是更像连续3次或最近x分钟/运行的80%之类的情况。
您的单元测试是以分钟/运行为单位吗?这更像是性能测试而不是单元测试吗?如果它不是单元测试而是性能/负载测试,我们使用JMeter(Hudson有一个插件,Maven也有)取得了很好的效果,它允许我们设置何时将构建设置为不稳定或失败的百分比。
在不稳定/仍未稳定的构建情况下,使用脚本设置邮件内容怎么样?
在这里,您可以添加一些if条件,仅测试所需测试用例的年龄。
<% if(build.testResultAction) {
def rootUrl = hudson.model.Hudson.instance.rootUrl
def jobName = build.parent.name
def previousFailedTestCases = new HashSet()
def currentFailedTestCase = new HashSet()
if(build.previousBuild?.testResultAction){
build.previousBuild.testResultAction.failedTests.each {
previousFailedTestCases << it.simpleName +"." + it.safeName
}
}
testResult.failedTests.each{tr ->
def packageName = tr.packageName
def className = tr.simpleName
def testName = tr.safeName
def displayName = className+"."+testName
currentFailedTestCase << displayName
def url = "$HUDSON_URL/job/$PROJECT_NAME/$BUILD_NUMBER/testReport/$packageName/$className/$testName"
if(tr.age == 1){
startedFailing << [displayName:displayName,url:url,age:1]
} else{
failing << [displayName:displayName,url:url,age:tr.age]
}
}
startedPassing = previousFailedTestCases - currentFailedTestCase
startedFailing = startedFailing.sort {it.displayName}
failing = failing.sort {it.displayName}
startedPassing = startedPassing.sort()
} %>
源链接: http://techkriti.wordpress.com/2008/08/30/using-groovy-with-hudson-to-send-rich-text-email/
看起来你需要在Hudson中有两个任务,一个用于单元测试,另一个用于Selenium。
你希望第一个任务能够构建和运行单元测试,并让Hudson汇报单元测试结果。
在配置中的“后构建操作”下,你可以添加一个“要构建的项目”,并指定用于构建和运行Selenium以及报告结果的任务。
这样,你就可以将单元测试邮件通知的阈值设置得比Selenium结果更加严格。