-
-
Notifications
You must be signed in to change notification settings - Fork 399
Getting Started
- JDK 8
- JUnit 4.12
Add this maven dependencies in test
scope which transitively brings in JUnit
lib.
<dependency>
<groupId>org.jsmart</groupId>
<artifactId>zerocode-tdd</artifactId>
<version>1.3.x</version> <!-- Pick the latest release -->
<scope>test</scope>
</dependency>
Latest release: 1.3.x - Click me 🏹
Then annotate your JUnit
test method pointing to the JSON/YAML scenario-file as below via @Scenario
and run
as a JUnit test. That's it really!
@TargetEnv("github_host.properties")
@RunWith(ZeroCodeUnitRunner.class)
public class JustHelloWorldTest {
@Test
@Scenario("helloworld/hello_world_scenario_happy_path.json")
public void testGet() throws Exception {
}
}
Where, the hello_world_scenario_happy_path.json
looks like below.
hello_world_scenario_happy_path.json
------------------------------------
{
"scenarioName": "Validate the GET api @@Richard", // <--- Free text with author meta data
"steps": [
{
"name": "get_user_details", // <--- Hook for next step
"url": "/users/octocat", // <--- Http URL relative to the host
"method": "GET", // <--- Http method GET, PUT, POST or DELETE etc
"retry": {
"max": 5,
"delay": 500 // <--- configurable retry options
},
"request": {
"headers": {
"Content-Type": "application/json" // <--- Http request headers
},
"queryParams":{
"type": "user" // <--- Http query params
}
},
"verify": {
"status": 200, // <--- Http status code
"headers": {
"Content-Type": [
"application/json; charset=utf-8" // <--- Http response headers
]
},
"body": {
"login": "octocat" // <--- Http response payload
}
}
}
]
}
the github_host.properties
looks as below:
github_host.properties
----------------------
web.application.endpoint.host=https://api.github.com
web.application.endpoint.port=443
web.application.endpoint.context=
Or using YAML:
hello_world_scenario_happy_path.yaml
------------------------------------
scenarioName: Validate the GET api @@Richard
steps:
-
name: get_user_details // <--- Hook for next step
url: /users/octocat // <--- Http URL relative to the host
method: GET // <--- Http method GET, PUT, POST or DELETE etc
retry:
max: 3 // <--- configurable retry options
delay: 1000
request:
headers:
Content-Type: application/json // <--- Http request headers
queryParams:
type: user // <--- Http query params
verify:
status: 200 // <--- Http status code
headers:
Content-Type:
- application/json; charset=utf-8 // <--- Http response headers
body: // <--- Http response payload
login: octocat
Runner:
@TargetEnv("github_host.properties")
@RunWith(ZeroCodeUnitRunner.class)
public class JustHelloWorldTest {
@Test
@Scenario("helloworld/hello_world_scenario_happy_path.yaml")
public void testGet() throws Exception {
}
}
Visit this User-Journey CRUD testing automation
Clone or Download the HelloWord project, and follow the Steps to Run Hello World
Visit the Zerocode Documentation Site for all things.
-
User's Guide
-
Matchers
-
Zerocode Value Tokens
-
YAML DSL
-
Http Testing
-
Kafka Testing
- Introduction
- Produce, consume proto message
- Produce raw message
- Consume raw message
- Produce JSON message
- Consume JSON message
- Produce and consume XML message
- Kafka - consume the latest message or n latest messages
- Produce avro message
- Consume avro message
- KSQL in action
- Produce multiple records
- Produce from file
- Produce to a partition
- Produce and consume records with headers
- Produce n assert partition ack
- Comsume and dump to file
- commitSync vs commitAsync
- Overriding config inside a test
- Chosing String or Int or Avro Serializer
- Chosing String or Int or Avro Deserializer
- Attaching timestamp during load
- Default timestamp provided by Kafka
- Consume and assert avro schema metadata
- Error handling - produce via avro schema
- Sorting Kafka records consumed
-
DB Testing
-
Kotlin Testing
-
Performance Testing - Load and Stress
- Performance Testing - via awesome JUnit runners
- Load Vs Stress generation on target application
- Run a single test or a scenario in parallel
- Run multiple test scenarios in parallel - Production load simulation
- Dynamically change the payload for every request
- Analytics - Useful report(s) or statistics
-
Parameterized Testing
-
Docker
-
More+
-
Extensions
-
JUnit5 Jupiter Test
-
Questions And Answers(FAQ)
- What is Zerocode testing?
- SSL http https connections supported?
- How to assert array size Greater-Than Lesser-Than etc?
- How to invoke POST api?
- How to assert custom headers of the response?
- How to pass custom security token into the request header?
- When to use JUnit Suite runner and when Zerocode Package runner?
- How to execute DB SQL and assert?
- How to handle Http response other than utf-8 e.g. utf-16 or utf-32 ?
- Random Number Generator Placeholders Usages and Limits
- Automation tests for Zerocode lib itself
- Picking a leaf value from the array matching JSON Path
- Array assertions made easy, incl. size and element finder
-
Read Our Blogs
- Top 16 Open Source API Testing Tools For REST & SOAP Services - joecolantonio (Lists popular tools - Globally)
- OAuth2 Test Automation - DZone 2min Read
- Zero defect APIs - Build Pipe Line - Medium 10 min Read
- Develop ZeroDefect API's with ZeroCode! - Extreme Portal ( A must read for all developers and test engineers) 10min Read
- Performance testing using JUnit and maven - Codeproject 10 min Read
- REST API or SOAP End Point Testing - Codeproject 10min Read
- DZone- MuleSoft API Testing With Zerocode Test Framework - DZone 5min Read
- Testing need not be harder or slower, it should be easier and faster - DZone 5 min Read
- Kotlin Integration Testing simplified via Zerocode - Extreme portal 10 min Read
- and More...