01 February 2011 TeamCity CI Team

imageDuring our BizzBingo project we use NUnit and since TeamCity 6.0 is Jetbrains dotCover also directly integrated. How dis would look like you are getting to know now.

1. Step: create Build Configuration

This ScreenShot is from Nightly Build and there is nothing special in it.

image

2. Version Control Settings

You need to adjust it depending on your project but here is nothing special to beware on here. We take the Source over the SVN interface from Codeplex.

image

3. Now it´s getting interesting....

My "Nightly" consist of 3 Build-steps but in this Blogpost just two of them are important:

- Build the whole SLN with "Rebuild" / "Debug" (an MSBuild is also possible)

- Take the NUnit test runner and check the Code Coverage on dotCover

image

Take a deeper look on the second step:

NUnit Testrunner Configuration:

image

We´ve installed NUnit Version 2.5.8 and in the textbox "Run tests from" is this included:

%system.teamcity.build.checkoutDir%\Main\Source\BusinessBingo\Tests\*\bin\Debug\*Tests.dll

imageBecause we are building the whole SLN with "Debug" the results are shown in our source tree in the adequate bin folder.

With Wuildcards the runner will found our tests like for example BusinessBingo.Commandhandler.Tests.dll and run them.

If we decide to add more tests to our project they will appear automatically in the Build - "Convention over Configuration".

Now the Unit tests run... let´s talk about dotCover.

In the newest version of TestCity 6.0 dotCover is directly integrated. That means, you don´t need to install it on the Buildserver. The configuration is quite easy:

image

With the filter you instruct dotCover which Code should be recognized for the CodeCoverage during UnitTesting.

+:BusinessBingo.*
-:BusinessBingo.*Test*

Important: don´t declare ".dll" here just the name. With "+" you say: search assemblies with this name (also Wildcars) and "-"means that there are no CodeCoverage.

Little hint: If you do everything right but no report will be generated take a look into the BuildLog. At the first try I got this error:

Solution:

Failed to read source file 'C:\TeamCity\buildAgent\temp\buildTmp\dotcover8583844779204955574.xml'. Could not find a part of the path 'C:\Windows\system32\config\systemprofile\AppData\Local\Temp\4q-kqg6z.tmp'.

Create the searched "Temp" folder in "C:\Windows\system32\config\systemprofile\AppData\Local"

Normally it doesn´t exist and because of this the error appeared. After this it works.

What do we have now?

Nice unit-tests which will be done by the Buildserver:

image

Code Coverage for the Assemblies:

image

Here you can see what will run or not beside of the .cs file:

image

And here we have a nice little overview:

image

Useful and easy and it doesn´t take a lot of time.