xunit test patterns refactoring test code phần 1

Tiện ích mở rộng giảm tính di động của kịch bản XSLT. Điều này chắc chắn là một mối nguy hiểm khi bạn sử dụng phần mở rộng được cung cấp tự nhiên bởi bộ xử lý XSLT của bạn hoặc khi thực hiện phần mở rộng của riêng bạn. Nó là đúng ngay cả khi bạn thực hiện của bạn | Simpo PDF Merge and Split Unregiste xUnit Test Patterns Rr FACTORING Test Coderỉ Gerard MESZAROS Foreword by Martin Fowler Simpo PDF Merge and Split UnregisteredVersion - http Assertion Message 370 We include a descriptive string argument in each call to an Assertion Method. Assertion Method 362 We call a utility method to evaluate whether an expected outcome has been achieved. Automated Teardown 503 We keep track of all resources that are created in a test and automatically destroy free them during teardown. Back Door Manipulation 327 We set up the test fixture or verify the outcome by going through a back door such as direct database access . Behavior Verification 468 We capture the indirect outputs of the system under test SUT as they occur and compare them to the expected behavior. Chained Tests 454 We let the other tests in a test suite set up the test fixture. Configurable Test Double 558 We configure a reusable Test Double with the values to be returned or verified during the fixture setup phase of a test. Creation Method 415 We set up the test fixture by calling methods that hide the mechanics of building ready-to-use objects behind Intent-Revealing Names. Custom Assertion 474 We create a purpose-built Assertion Method that compares only those attributes of the object that define test-specific equality. Data-Driven Test 288 We store all the information needed for each test in a data file and write an interpreter that reads the file and executes the tests. Database Sandbox 650 We provide a separate test database for each developer or tester. Delegated Setup 411 Each test creates its own Fresh Fixture by calling Creation Methods from within the Test Methods. Delta Assertion 485 We specify assertions based on differences between the pre- and post-exercise state of the SUT. Dependency Injection 678 The client provides the depended-on object to the SUT. Dependency Lookup 686 The SUT asks another object to return the depended-on object before it