How to Run cucumber test cases from jar? Jar not able to find stepdefinitions?

42 Views Asked by At

While Running Cucumber Test cases from Jar its not able to find step definations?


project-root
│
├── src
│   ├── main
│   │   └── java
│   │       └── com.example.package
│   │            └── Main.java (Cucumber CLI usage)
│   └── test
│       ├── java
│       │   └── com.example.package
│       │       └── runner
│       │           └── YourTestRunner.java (Test Runner class)
│       │       └── stepdefinition
│       │           └── YourStepDefinitions.java (Cucumber step definitions)
│       └── resources
│           └── features
│               └── your.feature

I have folder structure like above .

Executing using

package com.example;
import io.cucumber.core.cli.Main;

public class Main {
    public static void main(String[] args) throws Throwable {
        // Pass your command-line arguments to the Cucumber CLI Main class
        String[] cucumberArgs = {
            "--glue", "com.example.package.runner.YourTestRunner",
            "--glue", "com.example.package.stepdefinition", 
            "classpath:/features",
            "-t", "@mytag"
        };
        Main.run(cucumberArgs, Thread.currentThread().getContextClassLoader());
    }
}

gradle.build

plugins {
    id 'java'
    id 'com.springframework.boot' version ''
    id 'io.spring.dependency-management' version ''
    id 'com.github.johnrengelman.shadow' version '7.1.2' 
 
}

repositories {
    jcenter()
}

dependencies {
    testImplementation "io.cucumber:cucumber-java8:7.xx"
    testImplementation "io.cucumber:cucumber-java:7.xx"
    implementation "io.cucumber:cucmber-spring:7.xx"
}

test {
    useJUnitPlatform()
}


task buildCustomFatJar(type: Jar) {
    zip64 = true
    from sourceSets.main.output
    from sourceSets.test.output
    from {
        configurations.runtimeClasspath.collect { it.isDirectory() ? it : zipTree(it) }
    }

    // Set the main class for the JAR
    manifest {
        attributes 'Main-Class': ' com.example.package.Main' 
    }
    with jar
}

Running jar

java -jar custom-jar-name.jar

result

5 Scenarios (5 Undefined) 10 Steps (5 skipped, 5 undefined)

Since there was no main method so created main class with main method.
Expecting to run test cases from jar.

0

There are 0 best solutions below