microsoft / microsoft/vscode-java-test
Test attribute dependsOnMethods not honored when running tests individually
Nobody has claimed this yet.
- 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
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- 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