| Start | | Maven | Quickstart | |
|---|---|
| Run | | Command Line | IDE Support | Java JDK | Troubleshooting | |
| Report | | Configuration | Environment Switching | Serenity Reports | Logging | |
| Advanced | | Before / After Hooks | JSON Transforms | Contributing | |
The Framework uses Spring Boot Test , Cucumber and Serenity client implementations.
Spring <dependencies>:
<dependecies>
...
<dependency>
<groupId>org.springframework.amqp</groupId>
<artifactId>spring-rabbit</artifactId>
<version>${spring-rabbit.version}</version>
</dependency>
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-starter-test</artifactId>
</dependency>
<dependency>
<groupId>org.springframework</groupId>
<artifactId>spring-test</artifactId>
</dependency>
...
</dependecies>Serenity <dependencies>:
<dependecies>
...
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-core</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-junit</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-screenplay-webdriver</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-ensure</artifactId>
<version>${serenity.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-cucumber6</artifactId>
<version>${serenity.cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-rest-assured</artifactId>
<version>2.2.12</version>
</dependency>
<dependency>
<groupId>net.serenity-bdd</groupId>
<artifactId>serenity-spring</artifactId>
<version>2.2.12</version>
</dependency>
...
</dependecies>- Intellij IDE -
Recommended - Java JDK 11
- Apache Maven 3.6.3
By using the JUnit Framework @RunWith Annotation Type we can utilize Serenity and Cucumber @CucumberOptions Annotation Type to execute the *.feature
file tests
Right click the
WeatherTestclass and selectRun
@RunWith(CucumberWithSerenity.class)
@CucumberOptions(
plugin = {"pretty", "json:target/cucumber/report.json"},
features = "src/test/resources/features/WeatherTest.feature",
glue = {"com/cmccarthy/api", "com/cmccarthy/common"}
)
public class WeatherRunnerTest {}Normally you will use your IDE to run a *.feature file directly or via the *Test.java class. With the Test class,
we can run tests from the command-line as well.
Note that the mvn test command only runs test classes that follow the *Test.java naming convention.
You can run a single test or a suite or tests like so :
mvn test -Dtest=WeatherTest
mvn test -Dtest=JunitSuiteTest
Note that the mvn clean install command runs all test Classes that follow the *Test.java naming convention
mvn clean install
To minimize the discrepancies between IDE versions and Locales the <sourceEncoding> is set to UTF-8
<properties>
...
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
...
</properties>The Java version to use is defined in the maven-compiler-plugin
<build>
...
<pluginManagement>
<plugins>
...
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<configuration>
<source>11</source>
<target>11</target>
</configuration>
</plugin>
...
</plugins>
</pluginManagement>
...
</build>The AbstractTestDefinition class is responsible for specifying each Step class as @SpringBootTest and
its @ContextConfiguration
All the
Step Classesin the Framework shouldextendtheAbstractTestDefinitionclass
@ContextConfiguration(classes = {FrameworkContextConfiguration.class})
@SpringBootTest
public class AbstractTestDefinition {
}The FrameworkContextConfiguration class is responsible for specifying the Spring @Configuration, modules to scan,
properties to use etc
@EnableRetry
@Configuration
@ComponentScan({
"com.cmccarthy"
})
@PropertySource("application.properties")
public class FrameworkContextConfiguration {
}There is only one thing you need to do to switch the environment - which is to set <activeByDefault> property in the
Master POM.
By default, the value of
spring.profiles.activeis defined in theapplication.propertiesfile which inherits its value from the Master POM property<activeByDefault>
<profiles>
...
<profile>
<id>prod</id>
<activation>
<activeByDefault>true</activeByDefault>
</activation>
<properties>
<activatedProperties>prod</activatedProperties>
</properties>
</profile>
...
</profiles>You can then specify the profile to use when running Maven from the command line like so:
mvn clean install -P dev
Below is an example of the application.properties file.
spring.profiles.active=@activatedProperties@The Framework uses Serenity Reports to generate the HTML Test Reports
To generate the Serenity Reports execute the following from the command line
mvn serenity:aggregate
The example below is a report generated by Serenity Reports open-source library.
The Framework uses Log4j2 You can instantiate the logging service in any Class like so
private final Logger logger=LoggerFactory.getLogger(WikipediaPageSteps.class);you can then use the logger like so :
logger.info("This is a info message");
logger.warn("This is a warning message");
logger.debug("This is a info message");
logger.error("This is a error message");The Log4j2 logging service is initialized from the Hooks.class
public class Hooks {
@Autowired
private HookUtils hookUtil;
@After
public void afterScenario(Scenario scenario) {
hookUtil.endOfTest(scenario);
}
}Rest Assured IO is used to map the Response Objects to their respective POJO Classes
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.0</version>
</dependency>- Execute the following commands to resolve any dependency issues
cd ~/spring-cucumber-serenity-test-harnessmvn clean install -DskipTests
Spotted a mistake? Questions? Suggestions?
