SlimForDelphi is a Slim Protocol implementation for Delphi. It enables the creation of test fixtures in Delphi, which can then be driven by FitNesse. This allows for writing and executing automated acceptance tests in FitNesse using Delphi code.
- Slim Protocol Implementation: Full support for the Slim protocol to communicate with FitNesse.
- Delphi Fixtures: Allows the use of Delphi classes as FitNesse fixtures.
- Type Support: Supports standard data types (Integer, Float, String) and Slim lists.
- Serialization: Includes helper classes for serializing and deserializing Slim lists.
- Slim Proxy: Includes a proxy capability to forward Slim commands to other Slim servers (e.g. for remote execution).
- Unit Testing: Comprehensive testing with DUnitX.
- Delphi: The project is configured for modern Delphi versions (e.g., Delphi 12).
- Java Runtime: Required to run the FitNesse server.
- Clone the repository:
git clone https://github.com/WladiD/SlimForDelphi.git
- Initialize submodules (required for dependencies like
WDDelphiTools):git submodule update --init --recursive
-
Create a Delphi application and instantiate
TSlimServer. This acts as the listener for FitNesse connections.uses {...}, Slim.Server; procedure TMainForm.AfterConstruction; begin inherited; var SlimServer := TSlimServer.Create(Self); SlimServer.DefaultPort := 9000; SlimServer.Active := True; end;
-
Start FitNesse (ensure you have the
fitnesse-standalone.jar):java -Dslim.port=9000 -Dslim.pool.size=1 -jar fitnesse-standalone.jar
- Create a Delphi class inheriting from
TSlimFixture. - Annotate it with
[SlimFixture]. - Implement your logic.
- Register the fixture in the initialization section.
uses Slim.Fixture;
type
[SlimFixture('Division', 'eg')]
TSlimDivisionFixture = class(TSlimFixture)
private
FNumerator: Double;
FDenominator: Double;
public
procedure SetNumerator(ANumerator: Double);
procedure SetDenominator(ADenominator: Double);
function Quotient: Double;
end;
{ ... Implementation of methods ... }
initialization
RegisterSlimFixture(TSlimDivisionFixture);
end.