You do not have permission to delete messages in this group
Copy link
Report message
Show original message
Either email addresses are anonymous for this group or you need the view member email addresses permission to view the original message
to subs...@googlegroups.com
We’ve
been making some fairly extensive changes to the internals of Substeps,
we’ve had the chance to take a step back and reflect on the code
written so far and then refactor, with the intention of improving the
longer term maintainability and ease of extension and integration. The
major changes are described below, there are more detailed release notes
for each project.
NB.
There are some changes to the maven POMs required to upgrade to 1.1.0
of Substeps, however this shouldn't affect existing custom
StepImplementations or tests. If you do have any compatibility issues
please let us know and we’ll endeavour to assist. There is a short
migration guide here.
Execution in a forked VM ----------------------------------------- One
of the problems with versions of Substeps prior to 1.1.0 * is that of
classloading and versions; if executing via maven, the plugin would by
default drag in the version of Substeps and associated dependencies
without verbose inclusion and exclusion of dependencies. From 1.1.0
onwards it is possible to launch the Substeps test execution in a
separate VM with its own potentially different classpath. This change
also paves the way for further improvements in the eclipse plugin around
execution.
Caveats The
version of java on the path must match the version of Java used to run
Maven, otherwise there will be compatibility issues. We’ll change this
in future to use JAVA_HOME to be consistent with Maven. The
class com.technophobia.substeps.jmx.SubstepsJMXServer must have a log
level of DEBUG set (in the logging config configured on the classpath of
the project), otherwise the tests won’t run. Again, this will be
tidied up in the next release.
* this change was actually released in 1.0.2, however that release wasn't publicised as 1.1.0 was just around the corner.
API Jar created --------------------- Key
to breaking some of the dependencies between the various projects has
been the introduction of an api project, so hence a substeps-core-api
jar has been created, providing the interface for Substeps. Previously
other Substeps jars such as the maven plugin and the webdriver had a
dependency on substeps-core, this is no longer the case as they now
depend on the API.
The
major motivation for this is to allow changes to be made to core
without needing to re-release other modules. It will also provide
greater certainty of the compatibility between modules. The creation of
an API jar has forced us to think about what the interfaces should be,
this should make integration and extension of Substeps easier for third
parties.
New modules (extracted from substeps-core) ----------------------------------------------------------- In
addition to the API being split from core, ANT and JUnit runners have
been broken out too. Common components between them and the maven
plugin have also been separated. This greater componentisation should
help minimise the number of dependencies Substeps generally requires and
will facilitate some exciting plans we have for the future!!
Introduction of a bill of materials (BOM) --------------------------------------------------- The
downside to the greater componentisation of Substeps was that it could
have led to more complicated maven poms. To minimize this complexity,
we have introduced a BOM project which essentially lists the latest
stable dependencies. As Substeps component are changed and released,
the BOM will also be updated and released. Adding a dependency on the
latest BOM should ensure you are using the latest and greatest Substeps
components.
Internal changes to substeps-core --------------------------------------------- In
1.1.0 the Execution node hierarchy has been refactored. Different
types of execution node are now represented by their own class, the
rationale here was that the code is hopefully now cleaner, more readable
and should enable greater extensibility as we keep moving substeps
forward.
Execution statistics calculation has been changed ----------------------------------------------------------------- As
a result of the various refactorings of Substeps, we took a fresh look
at how the test execution statistics on the report are calculated. As a
result we’ve changed how the number of “Scenario Steps” are calculated
to take into account the number of iterations of scenario outlines.
Previously the number of Examples (iterations) of a Scenario outline
was ignored in this calculation, from 1.1.0 onwards it its included
thereby providing perhaps an indication of the depth of testing of a
particular scenario; the number of times the same scenario is exercised
with different parameters.
Other changes ------------------- There are some additional webdriver-substep step implementations for traversing rows in tables and dismissing javascript alerts. Courtesy
of Andrew Lee, the glossary builder can now generate JSON by specifying
com.technophobia.substeps.glossary.JsonSubstepsPublisher as the
implementation - thanks Andrew! This should make it a bit easier to use
excellent Andrew’s API viewer, something which we’ll probably adopt in a later release.
As
always, any issues, feedback please let us know. We’re happy to
receive pull requests or suggestions for new features and
improvements.