Intoduction to Unit Testing Using JUnit to structure








- Slides: 8
Intoduction to Unit Testing Using JUnit to structure Unit Testing SE-2030 Dr. Mark L. Hornick 1
How did you test your code? SE-2030 Dr. Mark L. Hornick 2
How can you test your app? l Run the app with inputs that should produce a known output, and verify the actual output One problem with this approach may be that you can’t make your app accept “bad” inputs; thus you may not be able to force all possible if-then-else blocks of the app’s classes’ methods to execute l Write a separate “test” program that is designed to exercise the classes and methods of the “production” app A problem with this might be gathering the results of the exercises and determining whether each one passed or failed. SE-2030 Dr. Mark L. Hornick 3
What is Unit Testing? l Creating special-purpose test code that exercises specific classes of your application is called Unit Testing l l l Unit Testing is also known as “Class Testing” Such test code usually exercises one method of a class at a time whenever possible. The tests usually include exercising the methods in “boundary conditions” by forcefeeding the methods “bad” arguments, such as nulls. SE-2030 Dr. Mark L. Hornick 4
Naïve Demo SE-2030 Dr. Mark L. Hornick 5
What is JUnit? l JUnit is an open source Java testing framework used to write and run repeatable tests. l It is built into Eclipse (and Itelli. J etc) l JUnit is designed to automatically call “test” methods that in turn test the “real” code. l l It can compare actual results the “test” received from a real method vs. the results it expected, and report deviations. It does not guarantee that the methods it calls actually perform meaningful tests l l You must write meaningful tests You must write “enough” tests to cover all possible situations SE-2030 Dr. Mark L. Hornick 6
What are some limitations of JUnit testing? l l Not well-suited for testing user interfaces (other approaches are needed) Does not ensure that all code is actually tested (other tools are needed to measure code coverage) Is not well-suited for testing an entire application Complexities related to testing private methods These topics are covered in more detail in SE 2832 SE-2030 Dr. Mark L. Hornick 7
Demonstration SE-2030 Dr. Mark L. Hornick 8