If you want to set up Teamcity with Delphi you have to take care of several important issues :
You can run a build with the msbuild-runner, but the Delphi commandline-compiler needs additional Environment Variables :
- APPDATA : this is where EnvOptions.proj is saved, without it Delphi cannot compile anything, the Problem is that this is installed under the Config-Dir of the User who installed Delphi
Values can be :
German Win2003 – D2007 : C:\Dokumente und Einstellungen\<USER>\Anwendungsdaten\Borland\BDS\5.0
English Windows7 -D2010: C:\Users\<USER>\AppData\Roaming\CodeGear\BDS\7.0
etc. - BDS – where Delphi is stored e.g. (for Delphi 2007) C:\Programme\CodeGear\RAD Studio\5.0
- BDSCOMMONDIR – e.g. (for Delphi 2007) C:\Dokumente und Einstellungen\All Users\Dokumente\RAD Studio\5.0
In Build file path you just need to add the <Project>.dproj File and your done if you just want to build the executable.
This alone already helped us to ensure that we always have at least all the source-files which are needed to compile the project, which wasn’t always the case before.
If you want Teamcity to also to run your Unit-tests then you have some extra work to do :
- Create a new Teamcity project with all the configuration from above e.g. <Project>-Test
- Then you need my adapted Console-Runner for DUnit, which emits the necessary infos for Teamcity.
Use this instead of the standard console-Runner from DUnit
e.g. change the Source of your Test-Exe Project toApplication.Initialize;
if IsConsole then
TeamCityTestRunner.RunRegisteredTests
else
GUITestRunner.RunRegisteredTests;
- Then you need my adapted Console-Runner for DUnit, which emits the necessary infos for Teamcity.
- Create a batch-file which calls the compiled Unit-test Exe and call it with Teamcity
and there you have it – a working integration of Delphi, DUnit and TeamCity.
Now if i only had a sure-fire way how to make all of the old GUI-centered Code testable so that i could switch to some Agile Practice like TDD …
Great article, thank you very much!
Great site. A lot of useful information here. I’m sending it to some friends!
Thank you. Very useful article. And we atre trying to workout some way to test old GUI-oriented code too )
Very nice post. I just stumbled upon your weblog and wanted to say that I have really enjoyed surfing around your blog posts. After all I’ll be subscribing to your rss feed and I hope you write again soon!
I know this is a little out of date now but are you able to give some info on how you set up DUnit under Team City? I have adopted a number of Delphi projects and want to set up CI for them but have got stuck on this point.
Great article! Do you know how we can get some coverage statistics after running the unit tests? We are trying to use Discover 2.9
HI
Nenad the expert is currently in the jungle – might take a while till he answers 😉
for .net projects we include the coverage reports as custom HTML Reports in Teamcity.
A) add them as artifact
B) configure them as HTML Page in Teamcity
Hey Daniel
Simple solution and it works. Thanks
Hey Daniel do you still has the TeamcityTestRunner ?
The download link is broken.
No sorry!