Comments (3)
You can use a CustomTestCaseSourceAttribute class to pass the data your looking to use. Its more complex then simply passing the value directly, but also allows way more control.
The following example is something I did were I needed to pass a large serialisation string.
AllCoreActions = class(CustomTestCaseSourceAttribute)
protected
function GetCaseInfoArray : TestCaseInfoArray; override;
end;
function AllCoreActions.GetCaseInfoArray: TestCaseInfoArray;
var
actionCategories : IList<IActionCategory>;
catIndex : Integer;
actionIndex : Integer;
actionInfo: IActionInfo;
begin
SetLength(Result, 0);
//Get the list of things to test using your preferred method.
actionCategories := ActionService.GetCategoies;
for catIndex := 0 to actionCategories.Count - 1 do
begin
for actionIndex := 0 to actionCategories[catIndex].ActionInfo.Count - 1 do
begin
actionInfo := actionCategories[catIndex].ActionInfo[actionIndex];
//Extend the list of test case data, also set a name to reference this test data by.
SetLength(Result, Succ(Length(Result)));
Result[high(Result)].Name := actionInfo.ActionClassName;
//Extend the list of params for this test data to the number of params for the test.
SetLength(Result[high(Result)].Values, 1);
Result[high(Result)].Values[0] := TValue.From<string>(actionInfo.Serialise);
end;
end;
end;
I can then run the test with a definition like so.
[Test, AllCoreActions]
procedure Can_Parse_With_Just_One_Action(const serialised : string);
from dunitx.
If I sucessfully use a string with more than 255 chars - what did I do wrong?
type
[ TestFixture ]
TFooAssemblerTest = class( TObject )
private const
FooData =
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234' +
{} '1234512345123451234512345123451234512345123451234512345123451234';
FooDTODataNone =
{} 'eAEBAAr/9TEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
{} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
{} 'ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
{} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
{} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
{} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
{} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQA'#$D#$A +
{} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
{} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
{} 'MgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
{} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
{} 'NQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
{} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
{} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
{} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
{} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1'#$D#$A +
{} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
{} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
{} 'ADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
{} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
{} 'ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
{} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
{} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
{} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
{} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUA'#$D#$A +
{} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
{} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
{} 'MwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
{} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
{} 'MQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
{} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
{} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
{} 'ADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEA'#$D#$A +
{} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAx'#$D#$A +
{} 'ADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQA'#$D#$A +
{} 'NQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAz'#$D#$A +
{} 'ADQAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIA'#$D#$A +
{} 'MwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAx'#$D#$A +
{} 'ADIAMwA0ADUAMQAyADMANAAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUA'#$D#$A +
{} 'MQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0'#$D#$A +
{} 'ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
{} 'NAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAy'#$D#$A +
{} 'ADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQAMQAyADMANAA1ADEA'#$D#$A +
{} 'MgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1'#$D#$A +
{} 'ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMANAA1ADEAMgAzADQANQAxADIAMwA0ADUAMQAyADMA'#$D#$A +
{} 'NACBZf7Z';
FooDTODataFastest =
{} 'eAEzZDBiMGYwYTBlMBwQ1sDYivDtqP2j8T+a/kfzP6JEoC9rtPwZLX9Gy5/R8oe+pQ7CNgCBZf7Z'#$D#$A;
FooDTODataDefault =
{} 'eJztzTcBAAAIwLBaYvm3hgwO+uVLkBTNECe6Wf39/f39/f39//4LgWX+2Q==';
FooDTODataMax =
{} 'eNrtzTEBADAIxMBY+gL+rdUFLNluu/AomiEnir+/v7+/v7+//6o+gWX+2Q==';
var
FAssembler: TFooAssembler;
public
[ Setup ]
procedure Setup;
[ TearDown ]
procedure TearDown;
[ Test ]
[ TestCase( 'None', 'zcNone,' + FooData + ',' + FooDTODataNone ) ]
[ TestCase( 'Fastest', 'zcFastest,' + FooData + ',' + FooDTODataFastest ) ]
[ TestCase( 'Default', 'zcDefault,' + FooData + ',' + FooDTODataDefault ) ]
[ TestCase( 'Max', 'zcMax,' + FooData + ',' + FooDTODataMax ) ]
procedure TestConvertFoo2FooDTO( CompressionLevel: TZCompressionLevel; const InData, OutData: string );
[ Test ]
[ TestCase( 'None', FooDTODataNone + ',' + FooData ) ]
[ TestCase( 'Fastest', FooDTODataFastest + ',' + FooData ) ]
[ TestCase( 'Default', FooDTODataNone + ',' + FooData ) ]
[ TestCase( 'Max', FooDTODataNone + ',' + FooData ) ]
procedure TestConvertFooDTO2Foo( const InData, OutData: string );
end;
from dunitx.
Nothing at all - big THANK YOU for showing me the right direction
from dunitx.
Related Issues (20)
- SetupFixture / TearDownFixture not call when TestRepeat attribute set with TestCase attribute présent HOT 1
- Small but annoying typo HOT 1
- Test project won't compile with XE2 and probably higher HOT 1
- fix commandline help documentation for exitbehavior HOT 1
- Assert.Pass(message) do not show anywhere the message
- Assert.AreEqual lacks currency support
- DUnitX xml does not set the namespace in the output properly HOT 3
- Proper support for TAlphaColor and TColor param HOT 1
- Recompling tests in Delphi 11.2 causes IO 105 errors HOT 3
- Android32 with incorrect TestCase parameters HOT 4
- WriteLn causing MemoryLeak using FastMM5
- Add argument 'ATrimValues: Boolean = False' to DUnitX.Attributes.TestCaseAttribute.Create HOT 1
- TestCaseAttribute does not work with parameters of type UInt64 and values > High(Int64)
- Integer compare always true HOT 1
- Problemas with TStringLIst instantiation HOT 1
- Change in FExitBehavior HOT 1
- TestCaseAttribute to support sets HOT 1
- Log elapsed time for each test in TDunitXConsoleMode
- IDE removes DUnitX.Loggers.Xml.NUnit from dpr
- StrToUInt64Def is not available in XE5 HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from dunitx.