Integration of Karate API with JUnit 4

  

Integrating JUnit 4 with Karate API

Karate is a powerful testing framework based on BDD (Behavior Driven Development), especially useful for testing web services and APIs. It uses Gherkin syntax (like Cucumber) and can be integrated with JUnit 4 for test execution.


Step-by-Step Integration of Karate with JUnit 4


Step 1: Add Dependencies


<dependencies>
    <!-- Karate Core -->
    <dependency>
        <groupId>com.intuit.karate</groupId>
        <artifactId>karate-junit4</artifactId>
        <version>1.4.1</version> <!-- or latest stable version -->
        <scope>test</scope>
    </dependency>

    <!-- For Assertions and Test Reporting -->
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.13.2</version>
        <scope>test</scope>
    </dependency>
</dependencies>




Step 2: Create Feature File

Create a file named sample.feature under:


src/test/java/examples




Feature file:

Feature: Sample API Test

  Scenario: Verify GET request
    Given url 'https://jsonplaceholder.typicode.com/posts/1'
    When method get
    Then status 200
    And match response.userId == 1


Step 3: Create JUnit 4 Test Runner

Create a Java class to run the above feature with JUnit 4.

src/test/java/examples/SampleRunnerTest.java:


package examples;

import com.intuit.karate.junit4.Karate;
import org.junit.runner.RunWith;

@RunWith(Karate.class)
public class SampleRunnerTest {
    // No need to write any code inside
}

This class tells JUnit 4 to use Karate as the test runner and will automatically find the .feature file in the same package.


Step 4: Run the Test

  • Right-click on SampleRunnerTest.java and choose Run As → JUnit Test

  • Or run via Maven:


mvn test



Step 5: View Reports

Karate automatically generates reports in target/karate-reports:

  • karate-summary.html

  • karate.log

  • karate-report.html




Optional: Run All Feature Files in a Folder

package examples;

import com.intuit.karate.junit4.Karate;
import org.junit.runner.RunWith;

@RunWith(Karate.class)
public class AllTests {
    // This will run all *.feature files in this package
}




Benefits of Karate + JUnit 4 Integration


FeatureDescription
BDD SyntaxSimple, readable Gherkin language
JUnit CompatibilityEasily integrates into CI/CD
Rich ReportingAuto HTML & JSON reports
No Java Code NeededScenarios are defined in .feature files