214 строки
10 KiB
Markdown
214 строки
10 KiB
Markdown
# Test Plan
|
|
|
|
## Basic view
|
|
### Explore Items
|
|
1. Clone code from https://github.com/Microsoft/todo-app-java-on-azure.git
|
|
2. Open the cloned project.
|
|
3. Verify:
|
|
1. The project item is listed in sidebar.
|
|
2. Expand the project node, it's a "Plugins" node.
|
|
3. Expand "Plugins" node, plguins are listed.
|
|
4. Expand a plugin node, plugin specified goals are listed.
|
|
5. Right click a goal, choose "Execute", it can execute the corresponding command in the terminal.
|
|
|
|
### Open corresponding POM file
|
|
1. Click on project item
|
|
2. Verify:
|
|
1. It opens the corresponding POM file in editor.
|
|
|
|
### Generate Effective POM file
|
|
1. Right-click on project item
|
|
2. Click `Effective POM`
|
|
3. Verify:
|
|
1. It shows `Generating effective pom ...` in status bar during generating.
|
|
2. Once the operation is over, message is cleaned from status bar, and it opens the Effective POM in editor.
|
|
4. Right-click on `pom.xml` in the file explorer view.
|
|
5. Click on `Effective POM`
|
|
6. Verify that it should have the same behaviour as above.
|
|
|
|
### Execute Maven goals
|
|
1. Right-click on project item
|
|
3. Click `clean`/`validate`/`compile`/`test`/`package`/`verify`/`install`/`site`/`deploy`.
|
|
4. Verify:
|
|
1. It opens an integrated terminal and sends the corresponding maven command to the terminal.
|
|
2. The maven command works.
|
|
|
|
### Execute custom goals
|
|
1. Right-click on project item
|
|
1. Click `Custom goals ... `
|
|
1. Input a valid string of goals, e.g. `clean package -DskipTests`, press `Enter`.
|
|
1. Verify:
|
|
1. It execute the corresponding maven command.
|
|
|
|
### Maven Command History
|
|
1. Open a folder with more than one maven project.
|
|
2. Open command palatte.
|
|
3. Select `Maven: History ...`
|
|
4. Verify:
|
|
1. It lists recently executed maven commands **for all projects in workspaces**, with information of goals and pom file path.
|
|
2. Select one of them, it should execute the corresponding command.
|
|
5. Right-click on one of the project item, click `History...`.
|
|
6. Verify:
|
|
1. It lists recently executed maven commands **for this project**, with information of goals and pom file path.
|
|
2. Select one of them, it should execute the corresponding command.
|
|
|
|
## Maven Archetypes
|
|
### Generate project from maven archetypes
|
|
1. Right-click a target folder in file explorer view.
|
|
2. Click `Generate from Maven Archetype`.
|
|
3. Verify:
|
|
1. It should show a dropdown list of popular maven archetypes.
|
|
2. The first item is `More ...`.
|
|
4. Select one of the listed archetype.
|
|
5. Select the target folder in the popup dialog.
|
|
6. Verify:
|
|
1. It opens an integrated terminal, and navigates to the target folder you previously selected.
|
|
2. It issues the corresponding maven command (archetype:generate) with correct parameters.
|
|
3. You can interactively continue to fill in missing params in the terminal to complete the task.
|
|
|
|
### Generate project from maven archetypes (for empty workspace)
|
|
1. Open Command Palette.
|
|
2. Click `Maven: Generate from Maven Archetype`.
|
|
3. Verify:
|
|
1. It should show a dropdown list of popular maven archetypes.
|
|
2. The first item is `More ...`.
|
|
4. Select one of the listed archetype.
|
|
5. Select the target folder in the popup dialog.
|
|
6. Verify:
|
|
1. It opens an integrated terminal, and navigates to the target folder you previously selected.
|
|
2. It issues the corresponding maven command (archetype:generate) with correct parameters.
|
|
3. You can interactively continue to fill in missing params in the terminal to complete the task.
|
|
|
|
|
|
### Update Maven Archetype Catalog
|
|
1. Open command palatte
|
|
2. Find and select `Maven: Update Maven Archetype Catalog`.
|
|
3. Verify:
|
|
1. It shows `updating archetype catalog ...` in progress bar during updating.
|
|
2. Once the operation is over, progress bar is cleaned.
|
|
3. The `archetypes.json` file located in `$HOME/.vscode/extensions/vscjava.vscode-maven-<version>/resources` is updated.
|
|
|
|
## Executable related
|
|
### Maven Wrapper support
|
|
1. Clone code https://github.com/Microsoft/todo-app-java-on-azure.git
|
|
2. Test `clean`, `Generate project from Maven Archetype` and `Effective POM`.
|
|
3. Verify:
|
|
1. It uses `./mvnw` in the root folder as executable, and no error occurs.
|
|
|
|
### Non-in-PATH maven executable Support
|
|
1. Clone code https://github.com/Microsoft/todo-app-java-on-azure.git
|
|
2. Open `User Settings`.
|
|
3. Change value of `maven.executable.path` according to the maven executable absolute path.
|
|
* For maven executables, use path of `mvn` / `mvn.cmd`
|
|
* For maven wrapper, use path of `mvnw` / `mvnw.cmd`
|
|
4. Test `clean`, `Generate project from Maven Archetype` and `Effective POM`.
|
|
5. Verify:
|
|
1. Corresponding executable is used and commands can be successfully executed with no error.
|
|
|
|
## Pom.xml file watcher
|
|
The tree view of maven projects should update when any pom.xml is created/modified/deleted in the current workspace.
|
|
|
|
### Create a pom.xml
|
|
1. Open an empty folder in VS Code.
|
|
2. Create a project with a valid pom.xml file. E.g. using `Generate from Maven Archetype` command.
|
|
3. After the pom.xml file is successfully created, verify:
|
|
1. A corresponding project item is automatically added into the sidebar.
|
|
|
|
### Modify a pom.xml
|
|
1. Open an existing maven project in VS Code.
|
|
2. Find the corresponding pom.xml file, and change the value of `artifactId`.
|
|
3. Verify:
|
|
1. The corresponding project item in the sidebar is updated with new value of artifact Id.
|
|
|
|
### Delete a pom.xml
|
|
1. Open an existing maven project in VS Code.
|
|
2. Find the corresponding pom.xml file and delete it.
|
|
3. Verify:
|
|
1. The corresponding project item is removed from the sidebar.
|
|
|
|
## Maven Executable Options and Enviroment Variables
|
|
### Maven Options
|
|
1. Open user settings, set a value for `maven.executable.options`, e.g. "-o".
|
|
2. Right click on a project to trigger a maven command.
|
|
3. Verify:
|
|
1. The command executed in the terminal should have the options appended.
|
|
|
|
### Special Handling for JAVA_HOME
|
|
1. Install Red Hat's Java Language Support extension.
|
|
2. Specify `java.home` in user settings for that extension:
|
|
```
|
|
"java.home": "<some value>" // Red Hat Java Language Support Setting
|
|
```
|
|
3. Add following entry in user settings:
|
|
```
|
|
"maven.terminal.useJavaHome": true // Use the Red Hat Java Language Support Setting for JAVA_HOME
|
|
```
|
|
4. Trigger a maven command, in the newly created terminal, verify:
|
|
1. value of env `JAVA_HOME` should be the value you just set in `java.home`
|
|
|
|
### General Environment Variables
|
|
1. Specify a environment variable `MAVEN_OPTS` in settings, e.g.
|
|
```
|
|
{
|
|
"maven.terminal.customEnv": [
|
|
{
|
|
"environmentVariable": "MAVEN_OPTS", // variable name
|
|
"value": "-Xms1024m -Xmx4096m" // value
|
|
}
|
|
]
|
|
}
|
|
```
|
|
2. Trigger a maven command, in the newly created terminal, verify:
|
|
1. value of env `MAVEN_OPTS` should be the value you just set in settings.
|
|
|
|
### Guide to Troubleshooting page if error occurs.
|
|
1. Make sure `mvn` is not in PATH, or you have set wrong `maven.executable.path` in VS Code.
|
|
2. Open VS Code, open a project, execute `Effective POM`, verify:
|
|
1. It shows a message box for the issue and detailed error message.
|
|
2. Click `Learn more`, it previews `Troubleshooting.md` in the editor.
|
|
|
|
|
|
## Others
|
|
|
|
### Multi-root Workspace Support
|
|
1. Clone code from https://github.com/spring-projects/spring-hadoop-samples.git
|
|
2. Clone code https://github.com/Microsoft/todo-app-java-on-azure.git
|
|
3. Open both above projects in the same VSCode windows under workspace features
|
|
4. Verify:
|
|
1. Projects are listed properly, grouped by root folder.
|
|
|
|
### Cross-platform Support
|
|
1. Open `User Settings`.
|
|
2. Check supported platforms and terminals in [README](https://github.com/Eskibear/vscode-maven/blob/develop/README.md)
|
|
3. Change value of `terminal.integrated.shell.windows/linux/osx` according to the targeted system and terminal.
|
|
4. Test `Custom goals ...`, `Generate project from Maven Archetype` and `Effective POM`.
|
|
5. Verify:
|
|
1. Commands can be successfully executed in above tasks.
|
|
|
|
## For Telemetry
|
|
After above tests, verify corresponding entries in Application Insight portal (vscode maven telemetry test).
|
|
|
|
### Legacy (Still need to verify for now)
|
|
* For each command executed, verify:
|
|
1. There are records named `vscjava.vscode-maven/commandStart` and `vscjava.vscode-maven/commandEnd` with same `customDimensions.sessionId`.
|
|
2. For record `vscjava.vscode-maven/commandEnd`, value (ms) of `customMeasurements.duration` is reasonable.
|
|
* For command `Generate from Maven Archetype`, verify:
|
|
1. values of `customDimensions.extra.finishedSteps`, `customDimensions.extra.artifactId` and `customDimensions.extra.groupId` are reasonable.
|
|
* **finishedSteps**: The steps user goes through after triggering the command. Candidates are `TargetFolder`, `ListMore` and `Archetype`.
|
|
* **groupId**: Group Id of selected archetype.
|
|
* **artifactId**: Artifact Id of selected archetype.
|
|
|
|
### New
|
|
|
|
* For extension activation and each command executed, verify:
|
|
1. There are records named `vscjava.vscode-maven/opStart` and `vscjava.vscode-maven/opEnd` with same `customDimensions.operationId`, `customDimensions.operationName`
|
|
2. In `opEnd`, check `customDimensions.errorCode`
|
|
1. 0 for no error.
|
|
2. Non-zero values indicate there's an error, check `message`, `stack`, `errorType` in `customDimensions`.
|
|
3. For non-zero values, there should be an extra record `vscjava.vscode-maven/error` carrying the same error information.
|
|
* For command `Generate from Maven Archetype`, verify:
|
|
1. Records named `vscjava.vscode-maven/opStep` are sent after each step is executed.
|
|
2. For some steps, an extra `vscjava.vscode-maven/info` is sent carrying information. E.g.:
|
|
* **groupId**: Group Id of selected archetype.
|
|
* **artifactId**: Artifact Id of selected archetype.
|