Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Get XML Reports in TeamCity from Google Test

I am trying to figure out how to run unit tests, using Google Test, and send the results to TeamCity.

I have run my tests, and output the results to an xml, using a command-line argument --gtest_output="xml:test_results.xml".

I am trying to get this xml to be read in TeamCity. I don't see how I can get XML Reports passed to TeamCity during build/run...

Except through XML report Processing:

I added XML Report Processing, added Google Test, then... it asks me to specify monitoring rules, and I added the path to the xml file... I don't understand what monitoring rules are, or how to create them...

[Still, I can see nowhere in the generated xml, the fact that it intends to talk to TeamCity...]

In the log, I have:

Google Test report watcher
[13:06:03][Google Test report watcher] No reports found for paths:
[13:06:03][Google Test report watcher] C:\path\test_results.xml
[13:06:03]Publishing internal artifacts

And, of course, no report results.

Can anyone please direct me to a proper way to import the xml test results file into TeamCity ? Thank you so much !

Edit: is it possible that XML Report Processing only processes reports that were created during build ? (which Google Test doesn't do?) And is ignoring the previously generated reports, as "out of date", while simply saying that it can't find them - or are in the wrong format, or... however I should read the message above ?

like image 713
Thalia Avatar asked Oct 16 '12 20:10

Thalia


2 Answers

I found a bug report that shows that xml reports that are not generated during the build are ignored, making a newbie like me believe that they may not be generated correctly.

Two simple solutions:

1) Create a post build script

2) Add a build step that calls the command line executable with the command-line argument. Example:

Add build step

enter image description here

Add build feature - XML report processing

enter image description here

like image 138
Thalia Avatar answered Oct 17 '22 22:10

Thalia


I had similar problems getting it to work. This is how I got it working.

When you call your google test executable from the command line, prepend %teamcity.build.checkoutDir% to the name of your xml file to set the path to it like this:

--gtest_output=xml:%teamcity.build.checkoutDir%test_results.xml

Then when configuring your additional build features on the build steps page, add this line to your monitoring rules:

%teamcity.build.checkoutDir%test_results.xml

Now the paths match and are in the build directory.

like image 21
Ryan Higgins Avatar answered Oct 17 '22 21:10

Ryan Higgins