1 / 13

Test-Driven Development: Advantages, Examples, and Refactoring Techniques

Learn about the benefits of test-driven development, explore examples of writing tests before code, and discover essential refactoring techniques that improve code quality.

dmelendez
Download Presentation

Test-Driven Development: Advantages, Examples, and Refactoring Techniques

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Chapter 21 Test-Driven Development CS6359 Fall 2011 John Cole

  2. Write the Tests First • Tests are written before the code • Developer writes unit tests for nearly all production code CS6359 Fall 2011 John Cole

  3. Advantages • The tests actually get written • Programmer satisfaction leads to more consistent test writing • Clarification of detailed interface and behavior • Provable, repeatable, automated verification • Confidence to change things CS6359 Fall 2011 John Cole

  4. Example • To test the Sale class, create a SaleTest class that: • Creates a Sale (the thing to be tested; a fixture) • Adds some line items to it with the makeLineItem method • Asks for the total and verifies that it is the expected value CS6359 Fall 2011 John Cole

  5. Pattern of Testing Methods • Create the fixture • Do some operation you want to test • Evaluate the results • Point: Don’t write all of the tests for Sale first; write one test method, implement the solution in Sale to make it pass, then repeat CS6359 Fall 2011 John Cole

  6. Using xUnit • Create a class that extends the TestCase class • Create a separate testing method for each Sale method you want to test. This will generally be every public method. CS6359 Fall 2011 John Cole

  7. Refactoring • A structured, disciplined method to rewrite or restructure existing code without changing its external behavior, applying small transformations and re-testing each step. • Unit tests applied after each step ensure that the changes didn’t cause a problem CS6359 Fall 2011 John Cole

  8. Goals of Refactoring • Remove duplicate code • Improve clarity • Make long methods shorter • Remove the use of hard-coded literal constants CS6359 Fall 2011 John Cole

  9. Code Smells • Duplicated code • Big methods • Class with many instance variables • Class with lots of code • Strikingly similar subclasses • Little or no use of interfaces • High coupling CS6359 Fall 2011 John Cole

  10. Basic Refactorings • Extract method – Convert a long method into shorter ones by moving part of it into a helper method • Extract constant – Replace a literal with a constant variable • Introduce explaining variable – put the results of an expression into a temporary variable with a name that explains its purpose • Replace constructor call with Factory Method – CS6359 Fall 2011 John Cole

  11. More Refactorings • Change method parameters (changes them in the definition, then finds all references) • Replace using new with a call to a method that returns an object. (Factory pattern) CS6359 Fall 2011 John Cole

  12. Code example Public class Die { public static final int MAX=6; public intfaceValue; public Die(){ roll(); } Public void roll() { faceValue = (int)((Math.Random() * MAX) + 1; } Public intgetFaceValue() { return faceValue; } } CS6359 Fall 2011 John Cole

  13. Another Example • rollDice on 392 CS6359 Fall 2011 John Cole

More Related