80 likes | 89 Views
Learn about the basics of unit testing using JUnit framework. Understand the benefits, limitations, and best practices of unit testing. SE-2030 Dr. Mark L. Hornick.
E N D
Intoduction to Unit Testing Using JUnit to structure Unit Testing SE-2030 Dr. Mark L. Hornick
How did you test your code? SE-2030 Dr. Mark L. Hornick
How can you test your app? • 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 • 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
What is Unit Testing? • Creating special-purpose test code that exercises specific classes of your application is called Unit Testing • 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 force-feeding the methods “bad” arguments, such as nulls. SE-2030 Dr. Mark L. Hornick
Naïve Demo SE-2030 Dr. Mark L. Hornick
What is JUnit? • JUnit is an open source Java testing framework used to write and run repeatable tests. • It is built into Eclipse (and ItelliJ etc) • JUnit is designed to automatically call “test” methods that in turn test the “real” code. • 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 • You must write meaningful tests • You must write “enough” tests to cover all possible situations SE-2030 Dr. Mark L. Hornick
What are some limitations of JUnit testing? • 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 SE2832 SE-2030 Dr. Mark L. Hornick
Demonstration SE-2030 Dr. Mark L. Hornick