send email from hudson when unittest fails
I am running Selenium unittests after my hudson build. And want to use it for monitoring my websites functionality.
When the build succeeds (which should be always, since it only contains the unittests), hudson will not send email开发者_运维百科s, even when some tests fail.
With email-ext, I could send emails when it becomes unstable, but since browser unittests are somewhat flaky, I do not want them at the first failure, more something like 3 in a row or 80% of the last x-Minutes/runs
Best would be a configuration based on a ruleset based on the testname or something defined in the test which marks it as relevant..
What about using a script for setting the mail content in case of unstable/still-unstable builds alone?
Here, you can add some if conditions for testing the age for the required test cases alone.
<% 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()
} %>
Source link : http://techkriti.wordpress.com/2008/08/30/using-groovy-with-hudson-to-send-rich-text-email/
When the build succeeds (which should be always, since it only contains the unittests), hudson will not send emails, even when some tests fail.
I don't know if this is something you want to fix, but if you use the argument
-Dmaven.test.failure.ignore=false
Then Hudson will fail your build if a test fails.
With email-ext, I could send emails when it becomes unstable, but since browser unittests are somewhat flaky, I do not want them at the first failure, more something like 3 in a row or 80% of the last x-Minutes/runs
Your unit tests are minutes/runs? Is this more a performance test than a Unit Test? If it's less a Unit Test and more a Performance / Load Test, we've used JMeter (Hudson has a plugin, as does Maven) with great effect, which allows us to set % when to set the build as unstable or failed.
It sounds like you need two jobs in hudson. One for unittests and one for selenium.
You want the first job to build and run the unittests and have hudson report on the unittests.
In the configuration under "post build actions" you can add a "project to build" and specify your job that builds and runs selenium and reports on those results.
This way you can tweak the thresholds for emails for unit tests to be far more strict than your selenium results.
精彩评论