Application to run DUnit tests automatically on change
Switch branches/tags
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
bin
dcu
examples
resources
.gitignore
ActiveObjectEngine.pas
AutoTestThread.pas
ComposedNotification.pas
ConsoleNotification.pas
DirWatcher.pas
ExeIcon.rc
GrowlNotification.pas
GrowlNotifier.pas
MSBuildCommand.pas
Notification.pas
PrjConst.pas
README.markdown
TestCommand.pas
VersionInfo.rc
autotest4delphi.cfg
autotest4delphi.dpr
autotest4delphi.dproj
autotest4delphi.res
icon.ico

README.markdown

Autotest 4 Delphi README

This is a little project for making Continuous Testing possible with Delphi.

The code was written with BDS 2006 but should work with later versions too.

In Order to work with this tool, you need the following:

  • a test project
  • Growl for Windows (optional)
  • Delphi (BDS 2009 or higher)
  • a file named autotest.ini in the same directory as the autotest4delphi.exe

The Test-Project

The test project MUST return an non zero Error code if there is a failure. An example project lies in the examples directory. I usually replace the ConsoleTestRunner with a modified XMLTestRunner, which outputs a NUnit compatible XML. I took the XMLTestRunner from DelphiXtreme for this task and modified it to the needs.

The Test procject will be compiled with

<dcc32.exe> -CC -DCONSOLE_TESTRUNNER;TEST;AUTOTEST -E<path of testproject>\bin -N0<path of testproject>\dcu -Q <testproject>

I usually place a dcc32.cfg with references to the matching library dirs in the test project to get it to compile

The Ini-File

The Ini-File is a simple text file named autotest.ini. It must consist of a section [autotest] and has the following:

  • DirectoryToWatch (required) - This is the directory which will be watched for changes. All subdirectories will be watched too.
  • TestProject - This is the path to the .dpr-File with the DUnit-Test project
  • DCC32Exe - This is the path to the dcc32.exe for compiling the test project.
  • UseBuildXML - if this is set to 1, and the entry BuildXMLPath exists and the file exists, then the configuration for the build and the test will be read from there ** if this is set, the settings TestProject and DCC32Exe will be ignored
  • BuildXMLPath - this is the full path to an xml file with the configuration in it

for example:

[autotest]
TestProject=C:\Projects\MyAwesomeProject\Tests\MyAwesomeProjectTests.dpr
DirectoryToWatch=C:\Projects\MyAwesomeProject
DCC32Exe=C:\Program Files (x86)\Borland\BDS\4.0\bin\dcc32.exe

Format of the build.xmö

The build.xml must lie in the same folder where the test project is located. It has the following format:

<?xml version="1.0" encoding="UTF-8"?>
<buildrunner>
  <environment>
    <!-- Here you can set Environment variables -->
    <BDS>%ProgramFiles%\CodeGear\RadStudio\6.0</BDS>
    <BDSCOMMONDIR />
    <FrameworkDir>%WINDIR%\Microsoft.NET\Framework64\</FrameworkDir>
    <FrameworkVersion>v2.0.50727</FrameworkVersion>
    <FrameworkSDKDir></FrameworkSDKDir>
    <Path>%FrameworkDir%%FrameworkVersion%;%FrameworkSDKDir%;%Path%</Path>
  </environment>
  <build>
    <command>msbuild.exe</command>
    <params>/nologo /verbosity:quiet /p:config=Release MyTests.dproj</params>
  </build>
  <test>
    <!-- 
      for the test command it is needed, that the full path is specified 
      %CD% is replaced with the path of the build.xml
    -->
    <command>%CD%\bin\MyTests.exe</command>
    <params></params>
  </test>
</buildrunner>

Command line parameters

The autotest4delphi.exe accepts now an optional parameter with the path to the autotes.ini file. e.g.

autotest4delphi.exe "C:\Test Project\autotest.ini

P.S.:

I apologize for not having done TDD for this project ;)