DonJayamanne / javaVSCode

Extension for java development on VSCode (deprecated)
https://marketplace.visualstudio.com/items?itemName=donjayamanne.javaDebugger
MIT License
43 stars 29 forks source link

Support debugging unit tests #51

Open dgileadi opened 7 years ago

dgileadi commented 7 years ago

I'm trying to set up a launch configuration for debugging unit tests, and have hit a wall. I was able to set up my classpath to find the JUnit jar file and launch it. However I'm unable to specify a test file to run. Here's my launch configuration:

        {
            "name": "Run a test",
            "type": "java",
            "request": "launch",
            "jdkPath": "${config:java.home}/bin",
            "sourcePath": ["${workspaceRoot}/src/test/java", "${workspaceRoot}/src/main/java"],
            "cwd": "${workspaceRoot}",
            "startupClass": "org.junit.runner.JUnitCore",
            "options": [
                "-classpath",
                "\"${workspaceRoot}/target/classes:${workspaceRoot}/target/test-classes:/Users/david.gileadi/.m2/repository/junit/junit/4.12/junit-4.12.jar:.\""
            ]
        }

My first thought was to change "startupClass" to include both JUnitCore and my test class, separated by a space. However if I make that change then it's no longer able to start JUnit—it complains:

Error: Could not find or load main class org.junit.runner.JUnitCore path.to.MyTest

Any suggestions?

faustinoaq commented 7 years ago

Remove \" seems that isn't necesary.

"options": [
    "-classpath",
    "${workspaceRoot}/target/classes:${workspaceRoot}/target/test-classes:/Users/david.gileadi/.m2/repository/junit/junit/4.12/junit-4.12.jar:."
]

This problem is already fixed in #45, just waitting to @DonJayamanne to publish a new version :sweat_smile:

dueckminor commented 7 years ago

As soon as fix https://github.com/DonJayamanne/javaVSCode/pull/55 gets published, it will be also possible to specify arguments which will be placed after the startupClass on the java command line. This allows you to select the class which should be tested.