Giter VIP home page Giter VIP logo

Comments (6)

vincentparrett avatar vincentparrett commented on August 22, 2024

I will take a look at this.. at the moment the fixtures are all generated internally at runtime, I'll see if we can add some sort of api to allow you to generate them.

from dunitx.

RomanYankovsky avatar RomanYankovsky commented on August 22, 2024

Actually, I can take on this task.

from dunitx.

vincentparrett avatar vincentparrett commented on August 22, 2024

I've made a start already, should have it working in the next day or so.

from dunitx.

RomanYankovsky avatar RomanYankovsky commented on August 22, 2024

@vincentparrett thank you!

from dunitx.

vincentparrett avatar vincentparrett commented on August 22, 2024

this is where I'm heading

IFixtureProviderContext = interface
['{933F8442-77F1-4574-BB5E-2F3D0B8E6E6F}']
function CreateFixture(const AFixtureClass : TClass; const AName : string) : ITestFixture;
end;

IFixtureProvider = interface
['{48D58C88-1236-4B96-9D5F-5DD81DB71504}']
procedure Execute(const context : IFixtureProviderContext);
end;

IPluginLoadContext = interface
['{0A60FE65-C3E3-4E98-9686-8BB6A793810B}']
procedure RegisterFixtureProvider(const provider : IFixtureProvider);
//procedure RegisterSomeOtherFeature(const provider : ISomeOtherFeature);
end;

IPlugin = interface
['{C706DD67-58D0-4B66-92A6-6FBE2AF065A4}']
procedure GetPluginFeatures(const context : IPluginLoadContext);
end;

So you would need to create a class that implements IPlugin, and another that implements IFixtureProvider, which you register when your plugin class's GetPluginFeatures method is called. The IFixtureProviderContext interface has methods for createing a ITestFixture, which has methods for adding child fixtures and tests. I'm going to refactor the internals of DUnitX to use this architecture as well, should clean up the fixture class a lot (I'm not all that happy with it, does too much in the constructor).

from dunitx.

vincentparrett avatar vincentparrett commented on August 22, 2024

I have implemented the needed functionality in DUnitX and submitted a pull request for DelphiSpec. It's not perfect, DUnitX expects the test methods to be on the same class as a fixture, so I had to create a fixture per scenario. If you can see a better way to do it, I'm open to suggestions.

from dunitx.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo 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.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.