From 8d758b63f2f69a292dde16db0b8176361bb393d7 Mon Sep 17 00:00:00 2001 From: James Truher Date: Tue, 2 Aug 2016 11:50:52 -0700 Subject: [PATCH] updates based on PR feedback --- docs/testing-guidelines/PesterDoAndDont.md | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/docs/testing-guidelines/PesterDoAndDont.md b/docs/testing-guidelines/PesterDoAndDont.md index 250e5b6f09..1dd7c91c2d 100755 --- a/docs/testing-guidelines/PesterDoAndDont.md +++ b/docs/testing-guidelines/PesterDoAndDont.md @@ -4,7 +4,7 @@ 1. Test only what you need 2. Reduce dependencies 3. Be sure to tag your `Describe` blocks based on their purpose - 1. Tag `CI` indicates that it will be run as part of the continuous integration process. These should be unit test like, and fast. + 1. Tag `CI` indicates that it will be run as part of the continuous integration process. These should be unit test like, and generally take less than a second. 2. Tag `Feature` indicates a higher level feature test (we will run these on a regular basis), for example, tests which go to remote resources, or test broader functionality 3. Tag `Scenario` indicates tests of integration with other features (these will be run on a less regular basis and test even broader functionality than feature tests. 4. Make sure that `Describe`/`Context`/`It` descriptions are useful @@ -12,14 +12,22 @@ 5. Use `Context` to group tests 1. Multiple `Context` blocks can help you group your test suite into logical sections 6. Use `BeforeAll`/`AfterAll`/`BeforeEach`/`AfterEach` instead of custom initiators -7. Use Try-Catch for expected errors and check $_.fullyQualifiedErrorId (don't use `should throw`) +7. Prefer Try-Catch for expected errors and check $_.fullyQualifiedErrorId (don't use `should throw`) 8. Use `-testcases` when iterating over multiple `It` blocks 9. Use code coverage functionality where appropriate 10. Use `Mock` functionality when you don't have your entire environment 11. Avoid free code in a `Describe` block - 1. Use `[Before|After][Each|All]` _see Free Code in a Describe block_ - + 1. Use `[Before|After][Each|All]` see [Free Code in a Describe block](WritingPesterTests.md#free-code-in-a-describe-block) +12. Avoid creating or using test files outside of TESTDRIVE: + 1. TESTDRIVE: has automatic clean-up +13. Keep in mind that we are creating cross platform tests + 1. Avoid using the registry + 2. Avoid using COM +14. Avoid being too specific about the _count_ of a resource as these can change platform to platform + 1. ex: checking for the count of loaded format files, check rather for format data for a specific type ## Don't -1. Have too many evaluations in a single It block +1. Don't have too many evaluations in a single It block 1. The first `Should` failure will stop that block -2. `Should` be used in an `It` Block +2. Don't use `Should` outside of an `It` Block +3. Don't use the word "Error" or "Fail" to test a positive case + 1. ex: "Get-Childitem TESTDRIVE: shouldn't fail", rather "Get-ChildItem should be able to retrieve file listing from TESTDRIVE"