guru.qas:martini-core

Martini: Core Libraries for Java

License

License

GroupId

GroupId

guru.qas
ArtifactId

ArtifactId

martini-core
Last Version

Last Version

6.0-JDK12
Release Date

Release Date

Type

Type

jar
Description

Description

guru.qas:martini-core
Martini: Core Libraries for Java
Project URL

Project URL

https://github.com/qas-guru/martini-core
Source Code Management

Source Code Management

https://github.com/qas-guru/martini-core/tree/master

Download martini-core

How to add to project

<!-- https://jarcasting.com/artifacts/guru.qas/martini-core/ -->
<dependency>
    <groupId>guru.qas</groupId>
    <artifactId>martini-core</artifactId>
    <version>6.0-JDK12</version>
</dependency>
// https://jarcasting.com/artifacts/guru.qas/martini-core/
implementation 'guru.qas:martini-core:6.0-JDK12'
// https://jarcasting.com/artifacts/guru.qas/martini-core/
implementation ("guru.qas:martini-core:6.0-JDK12")
'guru.qas:martini-core:jar:6.0-JDK12'
<dependency org="guru.qas" name="martini-core" rev="6.0-JDK12">
  <artifact name="martini-core" type="jar" />
</dependency>
@Grapes(
@Grab(group='guru.qas', module='martini-core', version='6.0-JDK12')
)
libraryDependencies += "guru.qas" % "martini-core" % "6.0-JDK12"
[guru.qas/martini-core "6.0-JDK12"]

Dependencies

compile (10)

Group / Artifact Type Version
com.google.guava : guava jar 28.0-jre
ch.qos.cal10n : cal10n-api jar 0.8.1
org.slf4j : slf4j-api jar 1.7.28
org.slf4j : slf4j-ext jar 1.7.28
io.cucumber : gherkin jar 4.1.1
org.apache.httpcomponents : httpcore jar 4.4.11
com.google.code.gson : gson jar 2.8.5
org.springframework : spring-core jar 5.1.9.RELEASE
org.springframework : spring-context jar 5.1.9.RELEASE
org.springframework : spring-beans jar 5.1.9.RELEASE

test (2)

Group / Artifact Type Version
org.slf4j : slf4j-simple jar 1.7.28
org.testng : testng jar 7.0.0

Project Modules

There are no modules declared in this project.

Martini Core

Table of Contents

  1. What is Martini?
    1. What is Martini Core?
  2. How does Martini work?
    1. Spring Framework
  3. Who uses Martini?
    1. Who uses Martini Core
  4. What is Martini's Goal?
    1. How can your organization benefit from using Martini?
  5. Who develops and maintains Martini?
    1. Recognition
  6. More Information

What is Martini?

Martini is an open-source Behavior Driven Development (BDD) testing framework for Java, similar in concept to Cucumber or JBehave. Martini provides multithreading, scenario lifecycle management and flexible filtering by leveraging the Spring Framework.

What is Martini Core?

This is the library which provides interfaces and default implementations supporting feature, scenario and step definitions as well as filtering, categorization and gating (throttling) concepts.

How does Martini Core work?

The library leverages the power of the Spring Framework.

It uses Spring to

  • find .feature files using a ResourceResolver
  • identify step implementation classes with an extension of the @Component annotation
  • instantiate singleton step objects using BeanPostProcessor
  • resolve step methods using a MethodResolver
  • filter features and scenarios using Spring Expression Language (SpEL)
  • manage scenario lifecycles using a Scope
  • publish scenario lifecycle events using the @EventListener annotation
  • publish suite lifecycle events using the @EventListener annotation

Who uses Martini?

Martini is designed to ensure software quality through use by an Agile team's Three Amigos. The Three Amigos generally consists of at least a Product Owner, a Software Engineer and a Quality Assurance Automation Engineer or Software Design Engineer in Test (SDET).

The Amigos should agree on feature specifications, then capture these specifications in Gherkin as scenarios describing expected behavior.

Who uses Martini Core?

Martini Core is intended to be used by a Quality Assurance Automation Engineer with fluency in the Java programming language and familiarity with the Spring Framework. The engineer uses Martini Core to implement executable steps in a scenario.

What is Martini's goal?

Martini was designed to be an enterprise-level tool, solving fundamental problems encountered with other BDD frameworks.

How can your organization benefit from using Martini?

  • Martini tests are written in Java and leverage Spring, and as a result can be relatively easily and quickly implemented and understood by most Java programmers.

  • Other libraries may be incorporated into a Martini suite. For example, Selenium may be used to launch a browser for each scenario testing a web application feature.

  • By default, Martini executes scenarios in parallel. Test suites executed on a multi-CPU system will complete much faster than in a suite written for a single-threaded virtual machine, such as with Ruby or Python.

  • As Martini executes in parallel, application deadlock issues may be detected through regular testing.

  • Martini suites can be executed in cloud environments.

  • Martini has a first-class concept of hierarchical test categories, useful for subsystem test failure reporting and selective test filtering.

  • Martini leverages Spring Expression Language, allowing for nested boolean filtering of test scenario execution.

  • Martini provides the capability filtering based on test category, test feature, individual scenario or even resource location.

  • Martini functional test suites may be leveraged with use of the Martini JMeter plugin.

  • Resource-intensive scenarios may be gated, preventing crashes of the application under test.

Who develops and maintains Martini?

Martini was developed by Penny Rohr Curich through Digital Measures' sabbatical program in the Spring of 2017 as the organic result of discussions regarding automation testing improvement by QA team peers.

Martini continues to be enhanced by Penny through 2018 to accomodate dependency release updates and as Digital Measures by Watermark's QA needs arise.

Requests for outside contribution are welcome!

Recognitions from Penny

  • A big thank you to Aslak Hellesøy et al, for creating, releasing and maintaining Cucumber.
  • Thank you to Rod Johnson et al, for creating, releasing and maintaining Spring.
  • Thank you to Cedric Beust, for all the great Java contributions over the years.
  • Thank you to Digital Measures CEO Matt Bartel and CTO Michael Rentas for sponsoring employee sabbaticals.
  • Thank you to friends at Spotify (you know who you are) for the open-source encouragement. "The worst thing that can happen is that nobody pays any attention."
  • Thank you to Ethan Jahns, formerly of Digital Measures, for soundboarding ideas and for forking an improved Gherkin parser.
  • Thank you to John Kieffer and Benjamin Newman at Digital Measures for encouragement.

Where can I find more information on Martini?

In Progress: Martini Core Wiki

In Progress: Martini - swank software testing in Java

guru.qas

Quality Assurance Gurus

Versions

Version
6.0-JDK12
5.0
4.1.2
4.1.1
4.1.0
4.0.0-JDK10
3.0.0
2.5.0
2.3.1
2.3.0
2.1.0
2.0
1.2.3
1.2.2
1.2.1
1.2.0
1.1.1
1.1.0
1.0.4
1.0.3
1.0.2
1.0.1
1.0.0
1.0.0-BETA