-
Notifications
You must be signed in to change notification settings - Fork 101
Testing Q# Code in VS Code
Q# supports a @Test()
annotation which, when applied to a callable, turns it into a unit test.
A Q# callable can be a unit test if it takes no parameters -- no type parameters (no generics) and no value parameters. Consider the following example:
function TestCase() : Unit {
Std.Diagnostics.Fact(2 * 2 == 4, "2*2 should be 4");
}
This test case can be turned into a runnable unit test by adding the @Test()
annotation:
@Test()
function TestCase() : Unit {
Std.Diagnostics.Fact(2 * 2 == 4, "2*2 should be 4");
}
Upon annotating the callable, a green "run" button will show up next to it:
![image](https://private-user-images.githubusercontent.com/12157751/407523100-34648026-3e42-4128-8d85-05f2653cce45.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjMzNTUsIm5iZiI6MTczODkyMzA1NSwicGF0aCI6Ii8xMjE1Nzc1MS80MDc1MjMxMDAtMzQ2NDgwMjYtM2U0Mi00MTI4LThkODUtMDVmMjY1M2NjZTQ1LnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDEwMTA1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTI5OGRjOTFlYjI4OWQyY2QxNTNhMmVlM2YxZTliNjZkOWNhMmQxZjllZjdmZGU1NTRlYjczMDdkZmMwNTdiYjgmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.6W6mu3vNoAf29hIOHPZedqOITbiX3ncEUzb0UKZJTK4)
Clicking this button will run the callable and report its results. Additionally, the tests will show up in the VS Code Test Explorer. The Test Explorer can be found in the VS Code Activity Bar, and it looks like a conical flask:
![image](https://private-user-images.githubusercontent.com/12157751/407522194-72bf6233-df13-42fb-bdb5-471a3de1831a.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjMzNTUsIm5iZiI6MTczODkyMzA1NSwicGF0aCI6Ii8xMjE1Nzc1MS80MDc1MjIxOTQtNzJiZjYyMzMtZGYxMy00MmZiLWJkYjUtNDcxYTNkZTE4MzFhLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDEwMTA1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTM2OTE0OTBmNDM0MmI2NzA2YTk5M2JiYTlkZjE0MDk4YTYzMTkzNjFjMjI0NzgzYzk1MjE4YWM3YzY3YzY3MmImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.bEWihtjsXOjak8qA_tuqUqbDtLoipysqjAidNah-sGI)
The Test Explorer shows all discovered tests for all currently active Q# documents and projects, and provides more ways to run and interact with groups of tests. See the Test Explorer docs for more information.
![image](https://private-user-images.githubusercontent.com/12157751/407523298-6b0bf6f6-c739-4bcb-98aa-1a7fc3b483e2.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3Mzg5MjMzNTUsIm5iZiI6MTczODkyMzA1NSwicGF0aCI6Ii8xMjE1Nzc1MS80MDc1MjMyOTgtNmIwYmY2ZjYtYzczOS00YmNiLTk4YWEtMWE3ZmMzYjQ4M2UyLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDclMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA3VDEwMTA1NVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWVmOWUwZTg0ZGQ0MmU4MDI3ZmZmYTkzNjA2ZjUxYmQxMDE2ZWMxZjM1MWM3NDllNjNjYzI2N2M5YjFkYjMxMTImWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.79cLUfzJLYFjV6pTH--pxL-wX-iqnUcd2a_iMeJfpPM)