base on Visual Studio Test Platform is the runner and engine that powers test explorer and vstest.console. # VSTest
The Visual Studio Test Platform is an open and extensible test platform that enables running tests, collect diagnostics data and report results. The Test Platform supports running tests written in various test frameworks, and using a pluggable adapter model. Based on user-choice, the desired test framework and its corresponding adapter can be acquired as a vsix or as NuGet package as the case may be. Adapters can be written in terms of a public API exposed by the Test Platform.
The Test Platform currently ships as part Visual Studio 2019, and in the .NET Core Tools Preview 3.
## Build status
[![Build Status](https://dev.azure.com/dnceng/public/_apis/build/status/Microsoft/vstest/microsoft.vstest.ci?branchName=main)](https://dev.azure.com/dnceng/public/_build/latest?definitionId=935&branchName=main)
## Contributing
**IMPORTANT: We only accept PRs for which exists a previously discussed and approved issue.**
There are many ways to contribute to VSTest
- [Submit issues](https://github.com/Microsoft/vstest/issues) and help verify fixes as they are checked in.
- Review the [open PRs](https://github.com/Microsoft/vstest/pulls).
- [Contribute features and fixes](./docs/contribute.md).
- Contribute to the documentation.
NOTE: When adding a new public API, always add it directly to the `PublicAPI.Shipped.txt` file. This helps us ensure we are always considering potential breaking changes (even between successive commits of un-released version) and avoids the burden of the unshipped to shipped commit.
## Documentation
### Features
- [Test Platform Architecture](./docs/RFCs/0001-Test-Platform-Architecture.md)
- [Test Discovery Protocol](./docs/RFCs/0002-Test-Discovery-Protocol.md)
- [Test Execution Protocol](./docs/RFCs/0003-Test-Execution-Protocol.md)
- [Adapter Extensibility](./docs/RFCs/0004-Adapter-Extensibility.md)
- [Test Platform SDK](./docs/RFCs/0005-Test-Platform-SDK.md)
- [Editors API Specification](./docs/RFCs/0007-Editors-API-Specification.md)
- [Data collection Protocol](./docs/RFCs/0006-DataCollection-Protocol.md)
- [Translation Layer](./docs/RFCs/0008-TranslationLayer.md)
- [Editors API Revision Update](./docs/RFCs/0009-Editors-API-RevisionUpdate.md)
- [TranslationLayer](./docs/RFCs/0008-TranslationLayer.md)
- [Source Information For Discovered Tests](./docs/RFCs/0010-Source-Information-For-Discovered-Tests.md)
- [Test Session Timeout](./docs/RFCs/0011-Test-Session-Timeout.md)
- [Test Adapter Lookup](./docs/RFCs/0013-Test-Adapter-Lookup.md)
- [Packaging](./docs/RFCs/0014-Packaging.md)
- [Telemetry](./docs/RFCs/0015-Telemetry.md)
- [Loggers Information From RunSettings](./docs/RFCs/0016-Loggers-Information-From-RunSettings.md)
- [Properties for TestCases in Managed Code](./docs/RFCs/0017-Managed-TestCase-Properties.md)
- [Skip Default Adapters](./docs/RFCs/0018-Skip-Default-Adapters.md)
- [Disable Appdomain While Running Tests](./docs/RFCs/0019-Disable-Appdomain-While-Running-Tests.md)
- [Improving Logic To Pass Sources To Adapters](./docs/RFCs/0020-Improving-Logic-To-Pass-Sources-To-Adapters.md)
- [Code Coverage for .Net Core](./docs/RFCs/0021-CodeCoverageForNetCore.md)
- [User Specified TestAdapter Lookup](./docs/RFCs/0022-User-Specified-TestAdapter-Lookup.md)
- [TestSettings Deprecation](./docs/RFCs/0023-TestSettings-Deprecation.md)
- [Blame Collector Options](./docs/RFCs/0024-Blame-Collector-Options.md)
### Other
- [Roadmap](./docs/releases.md)
- [Troubleshooting guide](./docs/troubleshooting.md)
## Building
VSTest can be built from within Visual Studio or from the CLI.
- [Building with Visual Studio](./docs/contribute.md#building-with-visual-studio)
- [Building with CLI, CI, Editors](./docs/contribute.md#building-with-cli-ci-editors)
## Microsoft Open Source Code of Conduct
This project has adopted the [Microsoft Open Source Code of Conduct](https://opensource.microsoft.com/codeofconduct/). For more information see the [Code of Conduct FAQ](https://opensource.microsoft.com/codeofconduct/faq/) or contact [
[email protected]](mailto:
[email protected]) with any additional questions or comments.
## License
VSTest platform is licensed under the [MIT license](./LICENSE)
## Issue Tracking
Please see [issue tracking](./issuetracking.md) for a description of the workflow we use to process issues.
## Roadmap
For more information on shipped and upcoming features/enhancements please refer to our [Releases](./docs/releases.md).
", Assign "at most 3 tags" to the expected json: {"id":"5261","tags":[]} "only from the tags list I provide: [{"id":77,"name":"3d"},{"id":89,"name":"agent"},{"id":17,"name":"ai"},{"id":54,"name":"algorithm"},{"id":24,"name":"api"},{"id":44,"name":"authentication"},{"id":3,"name":"aws"},{"id":27,"name":"backend"},{"id":60,"name":"benchmark"},{"id":72,"name":"best-practices"},{"id":39,"name":"bitcoin"},{"id":37,"name":"blockchain"},{"id":1,"name":"blog"},{"id":45,"name":"bundler"},{"id":58,"name":"cache"},{"id":21,"name":"chat"},{"id":49,"name":"cicd"},{"id":4,"name":"cli"},{"id":64,"name":"cloud-native"},{"id":48,"name":"cms"},{"id":61,"name":"compiler"},{"id":68,"name":"containerization"},{"id":92,"name":"crm"},{"id":34,"name":"data"},{"id":47,"name":"database"},{"id":8,"name":"declarative-gui "},{"id":9,"name":"deploy-tool"},{"id":53,"name":"desktop-app"},{"id":6,"name":"dev-exp-lib"},{"id":59,"name":"dev-tool"},{"id":13,"name":"ecommerce"},{"id":26,"name":"editor"},{"id":66,"name":"emulator"},{"id":62,"name":"filesystem"},{"id":80,"name":"finance"},{"id":15,"name":"firmware"},{"id":73,"name":"for-fun"},{"id":2,"name":"framework"},{"id":11,"name":"frontend"},{"id":22,"name":"game"},{"id":81,"name":"game-engine "},{"id":23,"name":"graphql"},{"id":84,"name":"gui"},{"id":91,"name":"http"},{"id":5,"name":"http-client"},{"id":51,"name":"iac"},{"id":30,"name":"ide"},{"id":78,"name":"iot"},{"id":40,"name":"json"},{"id":83,"name":"julian"},{"id":38,"name":"k8s"},{"id":31,"name":"language"},{"id":10,"name":"learning-resource"},{"id":33,"name":"lib"},{"id":41,"name":"linter"},{"id":28,"name":"lms"},{"id":16,"name":"logging"},{"id":76,"name":"low-code"},{"id":90,"name":"message-queue"},{"id":42,"name":"mobile-app"},{"id":18,"name":"monitoring"},{"id":36,"name":"networking"},{"id":7,"name":"node-version"},{"id":55,"name":"nosql"},{"id":57,"name":"observability"},{"id":46,"name":"orm"},{"id":52,"name":"os"},{"id":14,"name":"parser"},{"id":74,"name":"react"},{"id":82,"name":"real-time"},{"id":56,"name":"robot"},{"id":65,"name":"runtime"},{"id":32,"name":"sdk"},{"id":71,"name":"search"},{"id":63,"name":"secrets"},{"id":25,"name":"security"},{"id":85,"name":"server"},{"id":86,"name":"serverless"},{"id":70,"name":"storage"},{"id":75,"name":"system-design"},{"id":79,"name":"terminal"},{"id":29,"name":"testing"},{"id":12,"name":"ui"},{"id":50,"name":"ux"},{"id":88,"name":"video"},{"id":20,"name":"web-app"},{"id":35,"name":"web-server"},{"id":43,"name":"webassembly"},{"id":69,"name":"workflow"},{"id":87,"name":"yaml"}]" returns me the "expected json"