Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using gtest in jenkins

I successfully run my unit test with google test in Jenkins, but I don't know how to show the .xml file generated by gtest. It is said that gtest satisfies the JUnit format, so what I set is as follows:

Screenshot

But it ends up with errors after a building.

No test report files were found. Configuration error?
Build step 'Publish JUnit test result report' changed build result to FAILURE
Finished: FAILURE

like image 694
venus.w Avatar asked Jul 18 '12 11:07

venus.w


People also ask

Can we use Jenkins for unit testing?

Jenkins provides an out of box functionality for Junit, and provides a host of plugins for unit testing for other technologies, an example being MSTest for . Net Unit tests. If you go to the link https://wiki.jenkins-ci.org/display/JENKINS/xUnit+Plugin it will give the list of Unit Testing plugins available.

How do I run a test script in Jenkins?

Follow the below steps:Go to Jenkins dashboard. Click on manage Jenkins. Click on configure Jenkins. Click on JDK installation – In JDK name section enter the name, under Java Home section – give your java path.


1 Answers

Fraser's answer is good and you need some extra processing to convert the gtest XML to proper JTest format.

First you ask gtest to output the result to XML using:

mygtestapp --gtest_output=xml:gtestresults.xml 

Then in a script you need to add extra elements to properly flag skipped tests as such. Jenkin's JTest processor requires that a skipped test contains the <skipped> element and not just setting status to "notrun":

awk '{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;}' gtestresults.xml > gtestresults-skipped.xml mv gtestresults.xml gtestresults.off 

If running this on a windows batch file, put the awk action inside a file to avoid problems with the quotes. awk.progfile:

{ if ($1 == "<testcase" && match($0, "notrun")) print substr($0,0,length($0)-2) "><skipped/></testcase>"; else print $0;} 

And create add in your bat file:

awk -f awk.progfile gtestresults.xml > gtestresults-skipped.xml 

Lastly you point the JTest processor as a Post-Build step to read the converted XML:

# Publish JUnit Test Result Report Test Report XMLs: gtestresults-skipped.xml 
like image 138
MattiasF Avatar answered Oct 19 '22 23:10

MattiasF