目录
1. Add maven dependency
<!--karate test -->
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-apache</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
<exclusions>
<exclusion>
<groupId>ch.qos.logback</groupId>
<artifactId>logback-classic</artifactId>
</exclusion>
<exclusion>
<groupId>org.slf4j</groupId>
<artifactId>jcl-over-slf4j</artifactId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>com.intuit.karate</groupId>
<artifactId>karate-junit4</artifactId>
<version>${karate.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-java</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-junit</artifactId>
<version>${cucumber.version}</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-core</artifactId>
<version>${cucumber.version}</version>
</dependency>
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-jvm</artifactId>
<version>${cucumber.version}</version>
<type>pom</type>
</dependency>
Then use "mvn dependency:tree" see the duplicate import and exclude the unused one.
2. Write feature file
Feature: Call XXXController API.
Scenario: Testing valid POST endpoint
Given url 'http://localhost:8888/XXX'
And request {numFiles:10,uat:true,aws:true}
When method POST
Then status 200
Scenario: Testing that POST response contains specific field
Given url 'http://localhost:8888/XXX'
And request {numFiles:10,uat:true,aws:true}
When method POST
Then status 200
And match $ contains 'batchid:'
3. Write Runner file
import com.intuit.karate.KarateOptions;
import com.intuit.karate.junit4.Karate;
import org.junit.runner.RunWith;
@RunWith(Karate.class)
@KarateOptions(features = "classpath:features/XXXController.feature")
public class XXXControllerRunner {
}
Project structure is as below:
4. Run
a. Run feature file in idea
And plugin "Gherkin" and "Cucumber for java", then run the feature file.
b. Use runner
mvn test -Dtest=XXXControllerRunner
Please make sure the server is started before the Karate test runs.
Reference link:
https://www.baeldung.com/karate-rest-api-testing
https://www.cnblogs.com/ouguangqian/p/karate_learn.html
https://www.jetbrains.com/help/idea/running-cucumber-tests.html#run-cucumber-with-junit