microsoft / microsoft/vscode-java-test

Test attribute dependsOnMethods not honored when running tests individually

Open
#1,672 2 comments 2 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

ai-triaged enhancement test-execution testng
Dominant language
TypeScript
Stars
340
Forks
173
Avg merge
1d 19h
Merged PRs (30d)
18

Description

In eclipse, when you run a test individually and it depends on another test, it runs that other test first and then runs the test that has the dependency.
With the VSCode plugin, it does not appear to do this successfully. Instead it fails to find the dependency method:

[ INFO ] 2024-03-15 08:28:14.586 DefaultTestContextBootstrapper:174 - Using TestExecutionListeners: [org.springframework.test.context.web.ServletTestExecutionListener@25e2ab5a, org.springframework.test.context.support.DirtiesContextBeforeModesTestExecutionListener@35e5d0e5, org.springframework.test.context.event.ApplicationEventsTestExecutionListener@73173f63, org.springframework.test.context.support.DependencyInjectionTestExecutionListener@55562aa9, org.springframework.test.context.support.DirtiesContextTestExecutionListener@655ef322, org.springframework.test.context.event.EventPublishingTestExecutionListener@7e276594] Exception occured while running tests. org.testng.TestNGException: com.oreilly.yeti.tests.shippingServiceTest.organizationControllerTest.OrganizationControllerPositiveTest.getOrganizationById_expect_200() is depending on method public void com.oreilly.yeti.tests.shippingServiceTest.organizationControllerTest.OrganizationControllerPositiveTest.getOrganization_allOrgs_expect_200(), which is not annotated with @Test or not included. at org.testng.internal.MethodHelper.findDependedUponMethods(MethodHelper.java:141) MethodHelper.java:141 at org.testng.internal.MethodHelper.topologicalSort(MethodHelper.java:284) MethodHelper.java:284 at org.testng.internal.MethodHelper.sortMethods(MethodHelper.java:382) MethodHelper.java:382 at org.testng.internal.MethodHelper.lambda$collectAndOrderMethods$1(MethodHelper.java:75) MethodHelper.java:75 at org.testng.util.TimeUtils.computeAndShowTime(TimeUtils.java:45) TimeUtils.java:45 at org.testng.internal.MethodHelper.collectAndOrderMethods(MethodHelper.java:71) MethodHelper.java:71 at org.testng.TestRunner.computeAndGetAllTestMethods(TestRunner.java:557) TestRunner.java:557 at org.testng.internal.TestMethodContainer.getItems(TestMethodContainer.java:32) TestMethodContainer.java:32 at org.testng.internal.TestMethodContainer.getItems(TestMethodContainer.java:14) TestMethodContainer.java:14 at org.testng.TestRunner.initMethods(TestRunner.java:526) TestRunner.java:526 at org.testng.TestRunner.init(TestRunner.java:335) TestRunner.java:335 at org.testng.TestRunner.init(TestRunner.java:288) TestRunner.java:288 at org.testng.TestRunner.<init>(TestRunner.java:178) TestRunner.java:178 at org.testng.SuiteRunner$DefaultTestRunnerFactory.newTestRunner(SuiteRunner.java:639) SuiteRunner.java:639 at org.testng.SuiteRunner.init(SuiteRunner.java:225) SuiteRunner.java:225 at org.testng.SuiteRunner.<init>(SuiteRunner.java:115) SuiteRunner.java:115 at org.testng.TestNG.createSuiteRunner(TestNG.java:1349) TestNG.java:1349 at org.testng.TestNG.createSuiteRunners(TestNG.java:1325) TestNG.java:1325 at org.testng.TestNG.runSuitesLocally(TestNG.java:1167) TestNG.java:1167 at org.testng.TestNG.runSuites(TestNG.java:1099) TestNG.java:1099 at org.testng.TestNG.run(TestNG.java:1067) TestNG.java:1067 at com.microsoft.java.test.runner.testng.TestNGRunner.run(TestNGRunner.java:45) at com.microsoft.java.test.runner.testng.TestNGLauncher.execute(TestNGLauncher.java:32) at com.microsoft.java.test.runner.Launcher.main(Launcher.java:57)

  • It would be nice to just be able to click and run single methods that have dependencies instead of having to run the whole test class.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

Start by reproducing an individually run TestNG method with a dependsOnMethods relationship in the VS Code Java Test extension, then trace the selection through TestNGRunner and TestNGLauncher to the MethodHelper failure. Done means the selected method runs its dependency first instead of reporting that the dependency is not included.

Written by the indexing model from the issue text.

Assessment

Tech stack
java, typescript, vscode
Domain
developer-experience, testing
Issue type
Bug
Difficulty
4/5
Estimated time
3-5 days
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.