Comments (4)
Maybe the Given/When/Then methods could store the step definitions in a static Map<Class, List> somewhere. Then ScalaAnalyzer.registerHooksAndStepDefinitionsFor(...) could look them up in that Map later. Maybe not the most elegant solution, but maybe it can be done cleaner in Scala than in Java.
from cuke4duke.
Another option could be to make ClassLanguage a singleton (with a getInstance() method - yuck) and register the step definitions directly on that singleton from within the Given/When/Then methods. If you go for that approach, the registerHooksAndStepDefinitionsFor(...) method could be empty and do nothing (it would already be done in the Given/When/Then methods).
from cuke4duke.
(Aslak: Edited formatting of list)
This one is a little tricky.
Scala step definitions are really just closures paired with a string, so doing this through static analysis would not work. Storing stepdefinitions in a singleton would not be correct since the stepdefinitions would then be referencing the world they were created in.
What we can do, is capture the stepdefinitions for each new world being created. That would correctly scope the closures to the world defined by the objectfactory (since the objectfactory should be used to create the instances of the scalaDsl).
The result would then be pretty good where all tests are run in the same classloader allowing caching of expensive stuff in singletons, while at the same time executing the defined world.
The process would then be
- pass all classfiles to cuke4duke
- create objectfactory
- repeat:
- create world
- capture stepdefinitions
- execute
- dispose world
Alternatively we could capture the stepdefinitions in a "dry run", an return delegators for each stepdefinition. The delegators would the execute the re-captured ones scoped to the correct world. This could give some strange behaviour if people have sideeffects in their ScalaDsl constructors (they would get n+1 applications of that effect)
from cuke4duke.
Fixed a few weeks back during a heroic hacking session
from cuke4duke.
Related Issues (20)
- Antlib should define all tasks HOT 1
- Cannot get maven-cuke4duke-jump-start to work.... HOT 3
- cuke4duke wiki has dead links HOT 5
- gherkin 2.4.0 breaks cuke4duke 0.4.3/0.4.4 running using maven HOT 2
- The plugin 'org.apache.maven.plugins:maven-cuke4duke-plugin' does not exists HOT 1
- cuke4duke-maven-plugin is does not use username/password for proxy connection HOT 2
- OutOfMemoryError caused by SpringFactory HOT 1
- Cuke4Duke StepMother still using announce
- Cucuber 1.0.1 breaks cuke4duke HOT 10
- Errors while running java example "HelloCucumber" HOT 9
- java example hangs
- Configure Source Directory
- accessing tags for OutlineTable HOT 1
- Missing ant Buildlistener class
- Deploy maven plugins to Maven Central
- Step definitions inside jar HOT 6
- Example project 'jamesladd-maven-cuke4duke-jump-start' fails HOT 5
- cuke4duke install fails HOT 6
- better grails example HOT 3
- Deprecate this project more clearly
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 cuke4duke.