BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

αž˜αžΆαž“αž’αžαŸ’αžαž”αž‘αž‡αžΆαž…αŸ’αžšαžΎαž“αž“αŸ…αž›αžΎαž’αŸŠαžΈαž“αž’αžΊαžŽαž·αžαž’αŸ†αž–αžΈαžšαž”αŸ€αž”αž”αŸ’αžšαžΎ SpecFlow αžšαž”αŸ€αž”αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’ TFS αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž αž”αŸ‰αž»αž“αŸ’αžαŸ‚αž˜αž·αž“αž˜αžΆαž“αž’αžαŸ’αžαž”αž‘αžŽαžΆαž˜αž½αž™αžŠαŸ‚αž›αž˜αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž‘αž·αžŠαŸ’αž‹αž—αžΆαž–αž‘αžΆαŸ†αž„αž’αžŸαŸ‹αž“αŸ„αŸ‡αž‘αŸαŸ” αž“αŸ…αž€αŸ’αž“αž»αž„αž’αžαŸ’αžαž”αž‘αž“αŸαŸ‡ αžαŸ’αž‰αž»αŸ†αž“αžΉαž„αž”αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αž–αžΈαžšαž”αŸ€αž”αžŠαŸ‚αž›αž’αŸ’αž“αž€αž’αžΆαž…αž’αŸ’αžœαžΎαž±αŸ’αž™αž€αžΆαžšαž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš αž“αž·αž„αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŸαŸ’αž‚αŸ’αžšαžΈαž” SpecFlow αž„αžΆαž™αžŸαŸ’αžšαž½αž›αžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αž“αž€αžšαžΆαž›αŸ‹αž‚αŸ’αž“αžΆαŸ”

αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž’αŸ’αž“αž€αž“αžΉαž„αžšαŸ€αž“αž–αžΈαžšαž”αŸ€αž”αžŠαžΎαž˜αŸ’αž”αžΈαž‘αž‘αž½αž›αž”αžΆαž“αŸ–

  • αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž–αžΈ TFS
  • αž€αžΆαžšαž—αŸ’αž‡αžΆαž”αŸ‹αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αž‘αŸ…αž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž€αŸ’αž“αž»αž„ TFS
  • αžαŸ‚αž„αžαŸ‚αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž˜αžΆαžαž·αž€αžΆαž“αŸƒαž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž€αŸ’αž“αž»αž„ TFS
  • αžŸαž˜αžαŸ’αžαž—αžΆαž–αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžŸαŸ’αž‚αŸ’αžšαžΈαž”αžŠαŸ„αž™αž•αŸ’αž‘αžΆαž›αŸ‹αž“αŸ…αž€αŸ’αž“αž»αž„αž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαŸ’αžšαž½αžαž–αž·αž“αž·αžαŸ’αž™αž€αŸ†αžŽαŸ‚αžŠαŸ„αž™αž’αŸ’αž“αž€αžŸαžΆαž€αž›αŸ’αž”αž„
    BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

αžŸαž˜αŸαž™αž”αž»αžšαŸαž”αŸ’αžšαžœαžαŸ’αžαž·αžŸαžΆαžŸαŸ’αžαŸ’αžš

αž™αžΎαž„αž”αžΆαž“αž”αŸ’αžšαžˆαž˜αž˜αž»αžαž“αžΉαž„αž—αžΆαžšαž€αž·αž…αŸ’αž…αž“αŸƒαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαžŠαŸ„αž™αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžŠαŸ„αž™αž”αŸ’αžšαžΎαžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžšαŸ’αž BDD αŸ” αž…αžΆαž”αŸ‹αžαžΆαŸ†αž„αž–αžΈαž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž“αŸƒαž”αŸ’αžšαž–αŸαž“αŸ’αž’αžαžΆαž˜αžŠαžΆαž“αž—αžΆαžšαž€αž·αž…αŸ’αž…αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αžšαž»αž˜αž αŸŠαž»αž“αžšαž”αžŸαŸ‹αž™αžΎαž„αž‚αžΊ TFS αžαŸ’αž‰αž»αŸ†αž˜αžΆαž“αžšαžΌαž”αž—αžΆαž–αž“αŸ…αž€αŸ’αž“αž»αž„αž€αŸ’αž”αžΆαž›αžšαž”αžŸαŸ‹αžαŸ’αž‰αž»αŸ†αžŠαŸ‚αž›αž‡αŸ†αž αžΆαž“αž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž” SpecFlow αž‚αžΊαž‡αžΆαž‡αŸ†αž αžΆαž“αž“αŸƒαž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž€αŸ’αž“αž»αž„ TFS αž αžΎαž™αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžαŸ’αžšαžΌαžœαž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž–αžΈαž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αŸ” αžαžΆαž„αž€αŸ’αžšαŸ„αž˜αž“αŸαŸ‡αž‡αžΆαžšαž”αŸ€αž”αžŠαŸ‚αž›αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αž’αž“αž»αžœαžαŸ’αžαžœαžΆαŸ”

αž’αŸ’αžœαžΈαžŠαŸ‚αž›αž™αžΎαž„αžαŸ’αžšαžΌαžœαž€αžΆαžšαŸ–

  1. αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αž›αžΎ SpecFlow
  2. αž˜αŸ‰αžΆαžŸαŸŠαžΈαž“αž˜αŸ Azure DevOps (aka Team Foundation Server)
  3. αž§αž”αž€αžšαžŽαŸαžŸαž˜αŸ’αžšαžΆαž”αŸ‹αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžŸαŸ’αž‚αŸ’αžšαžΈαž” SpecFlow αž‡αžΆαž˜αž½αž™αž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž“αŸ…αž€αŸ’αž“αž»αž„ TFS

αž€αžΆαžšαž›αŸƒαžαž˜αŸ’αžšαžΌαžœ

1. αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž€αžŸαžΆαž„αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž

αž’αŸ’αžœαžΈαž‚αŸ’αžšαž”αŸ‹αž™αŸ‰αžΆαž„αž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰αž“αŸ…αž‘αžΈαž“αŸαŸ‡ αž€αžΆαžšαž‡αž½αž”αž”αŸ’αžšαž‡αž»αŸ†αž‚αŸ’αž“αžΆ αž“αž·αž„αž€αžΆαžšαž”αŸ„αŸ‡αž–αž»αž˜αŸ’αž–αžœαžαŸ’αžαž»αž”αž»αžšαžΆαžŽαŸ” αž”αž“αŸ’αžαŸ‚αž˜αž‘αŸ€αžαž’αŸ†αž–αžΈαž€αž·αž…αŸ’αž…αž€αžΆαžšαž‘αžΈαž”αžΈαž“αŸ…αž–αŸαž›αž€αŸ’αžšαŸ„αž™αŸ”

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

2. αž€αžΆαžšαž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αž

αž”αž„αŸ’αž€αžΎαžαž€αžΆαžšαž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αž·αž…αŸ’αž…αž€αžΆαžšαž˜αž½αž™ - αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŸαŸ’αž‘αžΌαžŒαžΈαž™αŸ„

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαž“αŸαŸ‡ αž—αžΆαžšαž€αž·αž…αŸ’αž…αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹αžšαž…αž“αžΆαžŸαž˜αŸ’αž–αŸαž“αŸ’αž’αžŠαžΎαž˜αŸ’αž”αžΈαžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ„αž™αžŠαŸƒαž–αžΈαž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

3. αž€αžΆαžšαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αž“αŸƒαž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„

αž™αžΎαž„αžŠαžΉαž„αžαžΆ Visual Studio αž’αž“αž»αž‰αŸ’αž‰αžΆαžαž±αŸ’αž™αž’αŸ’αž“αž€αž—αŸ’αž‡αžΆαž”αŸ‹αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŸαžΆαž€αž›αŸ’αž”αž„αžŠαžΎαž˜αŸ’αž”αžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž€αžšαžŽαžΈαž“αŸ…αž€αŸ’αž“αž»αž„ TFS αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž–αž½αž€αžœαžΆαž–αžΈαž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„αŸ” αžŠαžΎαž˜αŸ’αž”αžΈαž€αž»αŸ†αž’αŸ’αžœαžΎαžœαžΆαžŠαŸ„αž™αžŠαŸƒ αž“αž·αž„αžŠαžΎαž˜αŸ’αž”αžΈαž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜αžαŸ’αž›αžΉαž˜αžŸαžΆαžšαž“αŸƒαžŸαŸ’αž‚αŸ’αžšαžΈαž” αžαŸ’αž‰αž»αŸ†αž”αžΆαž“αžŸαžšαžŸαŸαžšαž€αž˜αŸ’αž˜αžœαž·αž’αžΈαž€αž»αž„αžŸαžΌαž›αžŸαžΆαž˜αž‰αŸ’αž‰ FeatureSync. αž‚αŸ„αž›αž€αžΆαžšαžŽαŸαž‚αžΊαžŸαžΆαž˜αž‰αŸ’αž‰ - αž™αžΎαž„αž‰αŸ‚αž€αž―αž€αžŸαžΆαžšαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ αž“αž·αž„αž’αŸ’αžœαžΎαž”αž…αŸ’αž…αž»αž”αŸ’αž”αž“αŸ’αž“αž—αžΆαž–αž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αžŠαŸ„αž™αž”αŸ’αžšαžΎ TFS API αŸ”

αžšαž”αŸ€αž”αž”αŸ’αžšαžΎ FeatureSync

αž”αž“αŸ’αžαŸ‚αž˜ namespace αž“αž·αž„αž˜αžΌαž›αžŠαŸ’αž‹αžΆαž“αž‘αŸ…αž”αž‹αž˜αž€αžαžΆαž―αž€αžŸαžΆαžšαž›αž€αŸ’αžαžŽαŸˆαž–αž·αžŸαŸαžŸ:

#language:en
@Namespace:Application.Autotests
Feature: Log to application

*namespace αžαŸ’αžšαžΌαžœαžαŸ‚αž•αŸ’αž‚αžΌαž•αŸ’αž‚αž„αžˆαŸ’αž˜αŸ„αŸ‡αž―αž€αžŸαžΆαžš .dll αžŠαŸ‚αž›αž˜αžΆαž“αžœαž·αž’αžΈαžŸαžΆαžŸαŸ’αžαŸ’αžšαžŸαžΆαž€αž›αŸ’αž”αž„

αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž€αžšαžŽαžΈαžŸαžΆαž€αž›αŸ’αž”αž„αž‘αž‘αŸαž“αŸ…αž€αŸ’αž“αž»αž„ TFS αž αžΎαž™αž”αž“αŸ’αžαŸ‚αž˜αžŸαŸ’αž›αžΆαž€αž‡αžΆαž˜αž½αž™αž›αŸαžαžŸαž˜αŸ’αž‚αžΆαž›αŸ‹αžšαž”αžŸαŸ‹αž–αž½αž€αž‚αŸαž‘αŸ…αžŸαŸ’αž‚αŸ’αžšαžΈαž”αŸ–

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

@2124573 @posistive
Scenario: Successful authorization
    Given I on authorization page
    And I enter:
        | Login | Password |
        | user  | pass     |
    When I press Login button
    Then Browser redirect on Home page

αž”αžΎαž€αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš FeatureSyncαŸ–

FeatureSync.exe -f C:FolderWithFeatures -s https://tfs.server.com/collection -t 6ppjfdysk-your-tfs-token-2d7sjwfbj7rzba

αž€αŸ’αž“αž»αž„αž€αžšαžŽαžΈαžšαž”αžŸαŸ‹αž™αžΎαž„ αž€αžΆαžšαž”αžΆαž‰αŸ‹αž”αž„αŸ’αž αŸ„αŸ‡αž€αžΎαžαž‘αžΎαž„αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαžŸαžΆαž„αžŸαž„αŸ‹αž‚αž˜αŸ’αžšαŸ„αž„αž‡αžΆαž˜αž½αž™αž“αžΉαž„αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαŸ–

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

αž›αž‘αŸ’αž’αž•αž›αžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜

αž‡αŸ†αž αžΆαž“αžŸαŸ’αž‚αŸ’αžšαžΈαž” SpecFlow αžαŸ’αžšαžΌαžœαž”αžΆαž“αž’αŸ’αžœαžΎαžŸαž˜αž€αžΆαž›αž€αž˜αŸ’αž˜ αž αžΎαž™αžŸαŸ’αžαžΆαž“αž—αžΆαž–αžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžαŸ’αžšαžΌαžœαž”αžΆαž“αž€αŸ†αžŽαžαŸ‹

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

4. αžšαŸ€αž”αž…αŸ†αž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„

αž™αžΎαž„αž”αž„αŸ’αž€αžΎαžαž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž”αž“αŸ’αžαŸ‚αž˜αž€αžšαžŽαžΈαžŸαŸ’αžœαŸαž™αž”αŸ’αžšαžœαžαŸ’αžαž·αžšαž”αžŸαŸ‹αž™αžΎαž„αž‘αŸ…αžœαžΆ αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαžŸαžΆαž„αžŸαž„αŸ‹ αž“αž·αž„αž…αŸαž‰αž•αŸ’αžŸαžΆαž™αž“αŸ…αž€αŸ’αž“αž»αž„αž€αžΆαžšαž€αŸ†αžŽαžαŸ‹

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

5. αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ‚αž›αž€αŸ†αž–αž»αž„αžŠαŸ†αžŽαžΎαžšαž€αžΆαžš

αž‡αŸ’αžšαžΎαžŸαžšαžΎαžŸαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ‚αž›αžαŸ’αžšαžΌαžœαž€αžΆαžšαž“αŸ…αž€αŸ’αž“αž»αž„αž•αŸ‚αž“αž€αžΆαžšαžŸαžΆαž€αž›αŸ’αž”αž„ αž αžΎαž™αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαžœαžΆαŸ”

BDD αž„αžΆαž™αžŸαŸ’αžšαž½αž›αŸ– SpecFlow + TFS

αžŸαŸαž…αž€αŸ’αžαžΈαžŸαž“αŸ’αž“αž·αžŠαŸ’αž‹αžΆαž“

αž‚αž»αžŽαžŸαž˜αŸ’αž”αžαŸ’αžαž·αž“αŸƒαž€αžΆαžšαž€αŸ†αžŽαžαŸ‹αž“αŸαŸ‡αŸ–

  • αž’αŸ’αž“αž€αžŸαžΆαž€αž›αŸ’αž”αž„αžŽαžΆαž˜αž½αž™αž’αžΆαž…αž”αžΎαž€αž―αž€αžŸαžΆαžš fetaure αž“αŸ…αž€αŸ’αž“αž»αž„αž‘αž˜αŸ’αžšαž„αŸ‹αž‚αŸαž αž‘αŸ†αž–αŸαžšαž‚αŸ’αžšαž”αŸ‹αž‚αŸ’αžšαž„αž€αŸ†αžŽαŸ‚ αž€αŸ‚αžŸαž˜αŸ’αžšαž½αž›αžœαžΆ αž αžΎαž™αž€αžΆαžšαž•αŸ’αž›αžΆαžŸαŸ‹αž”αŸ’αžαžΌαžšαž“αžΉαž„αž˜αžΆαž“αž”αŸ’αžšαžŸαž·αž‘αŸ’αž’αž—αžΆαž–αž—αŸ’αž›αžΆαž˜αŸ—αž”αž“αŸ’αž‘αžΆαž”αŸ‹αž–αžΈαž€αžΆαžšαž”αž„αŸ’αž€αžΎαž
  • αž’αŸ’αž“αž€αž’αžΆαž…αžŠαŸ†αžŽαžΎαžšαž€αžΆαžšαž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαž‡αžΆαž›αž€αŸ’αžαžŽαŸˆαž”αž»αž‚αŸ’αž‚αž›αž”αžΆαž“αž‚αŸ’αžšαž”αŸ‹αž–αŸαž›
  • αž‚αŸ†αžšαžΌαžαŸαžŸαŸ’αžαžαž˜αŸ’αž›αžΆαž—αžΆαž– - αž™αžΎαž„αžαŸ‚αž„αžαŸ‚αžŠαžΉαž„αž–αžΈαž’αŸ’αžœαžΈαžŠαŸ‚αž›αž€αžΆαžšαž’αŸ’αžœαžΎαžαŸαžŸαŸ’αžαžŠαŸ‚αž›αž™αžΎαž„αž”αžΆαž“αž…αžΆαž”αŸ‹αž•αŸ’αžαžΎαž˜αž’αŸ’αžœαžΎαŸ”

αž”αŸ’αžšαž—αž–: www.habr.com

αž”αž“αŸ’αžαŸ‚αž˜αž˜αžαž·αž™αŸ„αž”αž›αŸ‹