From aed785eaddb52da7e9a118f19c60dd577d68382b Mon Sep 17 00:00:00 2001 From: Arun Krishnamurthy Date: Mon, 13 Apr 2026 22:35:15 -0500 Subject: [PATCH] fix: use correct Surefire user property for engine filtering The property name is surefire.includeJUnit5Engines, not includejunit5engines. The wrong name was silently ignored by Surefire, causing all test engines to run. Fixed in SUREFIRE-2059. --- package.json | 2 +- src/execution/mavenRunner.ts | 3 ++- src/test/unit/mavenRunner.test.ts | 6 +++--- 3 files changed, 6 insertions(+), 5 deletions(-) diff --git a/package.json b/package.json index 41eef28..61bd666 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "cucumber-java-test-runner", "displayName": "Cucumber Test Runner for Java", "description": "Run and debug Cucumber BDD scenarios from VS Code's native Test Explorer. Integrates with Maven and cucumber-junit-platform-engine.", - "version": "0.1.2", + "version": "0.1.3", "publisher": "arunkris", "license": "MIT", "repository": { diff --git a/src/execution/mavenRunner.ts b/src/execution/mavenRunner.ts index 1d0584d..35455de 100644 --- a/src/execution/mavenRunner.ts +++ b/src/execution/mavenRunner.ts @@ -83,7 +83,8 @@ export class MavenRunner implements BuildToolRunner { // Only run the Cucumber engine — prevents non-Cucumber tests from // executing and avoids double execution through the Suite engine. - args.push('-Dincludejunit5engines=cucumber'); + // User property name: surefire.includeJUnit5Engines (fixed in SUREFIRE-2059). + args.push('-Dsurefire.includeJUnit5Engines=cucumber'); // Pass glue so the Cucumber engine finds step definitions without // scanning the entire classpath. diff --git a/src/test/unit/mavenRunner.test.ts b/src/test/unit/mavenRunner.test.ts index 01a9e0e..6f38f47 100644 --- a/src/test/unit/mavenRunner.test.ts +++ b/src/test/unit/mavenRunner.test.ts @@ -215,7 +215,7 @@ describe('MavenRunner', () => { featureTargets: ['src/test/resources/login.feature:10'], runnerClass: 'CucumberTest', }); - assert.ok(cmd.args.includes('-Dincludejunit5engines=cucumber'), + assert.ok(cmd.args.includes('-Dsurefire.includeJUnit5Engines=cucumber'), 'Should include engine filter'); assert.ok(!cmd.args.some(a => a.startsWith('-Dtest=!')), 'Should NOT use -Dtest=! exclusion'); @@ -226,7 +226,7 @@ describe('MavenRunner', () => { projectRoot: tmpDir, featureTargets: ['src/test/resources/login.feature:10'], }); - assert.ok(cmd.args.includes('-Dincludejunit5engines=cucumber'), + assert.ok(cmd.args.includes('-Dsurefire.includeJUnit5Engines=cucumber'), 'Should include engine filter even without runnerClass'); assert.ok(!cmd.args.some(a => a.startsWith('-Dtest=')), 'Should not have any -Dtest arg'); @@ -263,7 +263,7 @@ describe('MavenRunner', () => { featureTargets: [], runnerClass: 'com.example.RunCucumber', }); - assert.ok(!cmd.args.includes('-Dincludejunit5engines=cucumber'), + assert.ok(!cmd.args.includes('-Dsurefire.includeJUnit5Engines=cucumber'), 'Should not include engine filter for Run All'); assert.ok(cmd.args.includes('-Dtest=com.example.RunCucumber'), 'Should use -Dtest for Run All');