在我的hudson构建之后,我正在运行Selenium单元测试。并希望用它来监控我的网站功能。
当构建成功时(应该总是这样,因为它只包含单元测试),即使某些测试失败,hudson也不会发送电子邮件。
使用email-ext,我可以在电子邮件变得不稳定的时候发送电子邮件,但由于浏览器的单元测试有点不稳定,我不希望它们在第一次失败时,更像是连续3次或80%的最后一次x-分钟/运行
Best是一个基于规则集的配置,该规则集基于testname或测试中定义的内容,标记为相关..
答案 0 :(得分:1)
当构建成功时(应该总是这样,因为它只包含单元测试),即使某些测试失败,hudson也不会发送电子邮件。
我不知道这是否是您要修复的内容,但如果您使用参数
-Dmaven.test.failure.ignore=false
如果测试失败,那么Hudson将失败你的构建。
使用email-ext,我可以在电子邮件变得不稳定的时候发送电子邮件,但由于浏览器的单元测试有点不稳定,我不希望它们在第一次失败时,更像是连续3次或80%的最后一次x-分钟/运行
您的单位测试是分钟/跑步?这是一个性能测试而不是单元测试吗?如果它不是单元测试而是更多的性能/负载测试,我们使用JMeter(Hudson有一个插件,就像Maven一样)效果很好,这允许我们设置%何时将构建设置为不稳定或失败。
答案 1 :(得分:1)
听起来你需要在哈德森找两份工作。一个用于单位测试,一个用于硒。
您希望第一份工作是构建和运行单元测试,并对单元测试进行哈德森报告。
在“post build actions”下的配置中,您可以添加“要构建的项目”并指定构建和运行selenium的作业并报告这些结果。
通过这种方式,您可以调整单元测试电子邮件的阈值,使其比您的硒结果严格得多。
答案 2 :(得分:1)
如果单独使用不稳定/静止不稳定的构建,使用脚本设置邮件内容怎么样?
在这里,您可以添加一些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/