A starter Cucumber test framework using TestNG and Gradle
Cucumber and JUnit has been a very popular combination since a long time. Ample resources are available online to learn and implement the automation using Cucumber and JUnit. But not so much about TestNG. Cucumber documentation touches upon this topic a bit, but even there, the examples are based on Maven.
Recently I started working on Cucumber
, TestNG
and Gradle
. So putting together a starter kit, that can be extended further as needed.
This is a basic framework using
- Gradle as a build tool
- Cucumber BDD
- TestNG as a testing tool
It has a pre-configured build.gradle and runner file with test configuration added to it.
Key features:
- Latest versions of Cucumber and TestNG
- Logging to console output
- Pretty reporting on console
- HTML reporting
- Parallel execution support
- Helpful code comments
It contains only one Cucumber feature file and just one Scenario Outline
in it.
Feature: Parallel tests using testng
Sample feature file for parallel execution demo
Scenario Outline: Parallel Runs
Given I configure parallel test <test_no> with testng
When I run test <test_no>
Then the test <test_no> runs in parallel mode
Examples:
| test_no |
| "1" |
| "2" |
| "3" |
| "4" |
| "5" |
| "6" |
| "7" |
| "8" |
| "9" |
| "10" |
You can see that the scenario runs once for each row in the examples. Based on the thread count, the order and time of execution will vary accordingly.
The test
section from build.gradle
is important. Most of the testing specific configuration is in this section.
test {
// tests will be run using the testng
useTestNG()
// We use the DataProvider parallel option.
// See the TestRunner.java for the DataProvider annotation
jvmArgs(["-Ddataproviderthreadcount=$THREAD_COUNT"])
// Specifies whether test classes should be detected
scanForTestClasses = false
// display the stdout and stderr on the console
testLogging.showStandardStreams(true)
//Specifies whether the build should break when the tests fail.
ignoreFailures = false
// Indicates if test run will halt on the first failed test
failFast = true
}
Clone or download the master branch. then run gradlew clean test
.
Tweak the settings in build.gradle
or TestRunner.java
as needed.
You can then add more libraries like Selenium and develop the framework to suit your needs.