DOC PREVIEW
Penn CIT 591 - JUnit Lecture

This preview shows page 1-2-3-25-26-27 out of 27 pages.

Save
View full document
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
View full document
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience
Premium Document
Do you want full access? Go Premium and unlock all 27 pages.
Access to all documents
Download any document
Ad free experience

Unformatted text preview:

JUnitTest suitesExample: Old way vs. new wayXP approach to testingSlide 5TerminologyOnce more, in picturesWriting a JUnit test class, IWriting a JUnit test class, IIA simple exampleAssert methods IExample: Counter classJUnit tests for CounterThe Counter class itselfWarning: equalsAssert methods IIAssert methods IIIWriting a JUnit test class, IIISpecial features of @TestTest-Driven Development (TDD)StubsIgnoring a testSlide 23JUnit in EclipseViewing results in EclipseRecommended approachThe EndJan 14, 2019JUnit2Test suitesObviously you have to test your code to get it working in the first placeYou can do ad hoc testing (testing whatever occurs to you at the moment), orYou can build a test suite (a thorough set of tests that can be run at any time)Disadvantages of writing a test suiteIt’s a lot of extra programmingTrue—but use of a good test framework can help quite a bitYou don’t have time to do all that extra workFalse—Experiments repeatedly show that test suites reduce debugging time more than the amount spent building the test suiteAdvantages of having a test suiteYour program will have many fewer bugsIt will be a lot easier to maintain and modify your programThis is a huge win for programs that, unlike class assignments, get actual use!3Example: Old way vs. new wayint max(int a, int b) { if (a > b) { return a; } else { return b; }}void testMax() { int x = max(3, 7); if (x != 7) { System.out.println("max(3, 7) gives " + x); } x = max(3, -7); if (x != 3) { System.out.println("max(3, -7) gives " + x); }}public static void main(String[] args) { new MyClass().testMax();}@Testvoid testMax() { assertEquals(7, max(3, 7)); assertEquals(3, max(3, -7));}4XP approach to testingIn the Extreme Programming approach,Tests are written before the code itselfIf code has no automated test case, it is assumed not to workA test framework is used so that automated testing can be done after every small change to the codeThis may be as often as every 5 or 10 minutesIf a bug is found after development, a test is created to keep the bug from coming backConsequencesFewer bugsMore maintainable codeContinuous integration—During development, the program always works—it may not do everything required, but what it does, it does right5JUnitJUnit is a framework for writing testsJUnit was written by Erich Gamma (of Design Patterns fame) and Kent Beck (creator of XP methodology)JUnit uses Java’s reflection capabilities (Java programs can examine their own code)JUnit helps the programmer:define and execute tests and test suitesformalize requirements and clarify architecturewrite and debug codeintegrate code and always be ready to release a working versionJUnit is not included in Sun’s SDK, but almost all IDEs include it6TerminologyA test fixture sets up the data (both objects and primitives) that are needed to run testsExample: If you are testing code that updates an employee record, you need an employee record to test it onA unit test is a test of a single classA test case tests the response of a single method to a particular set of inputsA test suite is a collection of test casesA test runner is software that runs tests and reports resultsAn integration test is a test of how well classes work togetherJUnit provides some limited support for integration tests7test suiteOnce more, in picturesA unit test tests the methods in a single classA test case tests (insofar as possible) a single methodYou can have multiple test cases for a single methodA test suite combines unit testsThe test fixture provides software support for all thisThe test runner runs unit tests or an entire test suiteIntegration testing (testing that it all works together) is not well supported by JUnitunit test (for one class)another unit testtest case (for one method)another test casetest case (for one method)another unit testanother test caseanother test caseanother test casetest fixturetest runneranother test case8Writing a JUnit test class, IStart by importing these JUnit 4 classes:import org.junit.*;import static org.junit.Assert.*; // note static importDeclare your test class in the usual waypublic class MyProgramTest {Declare an instance of the class being testedYou can declare other variables, but don’t give them initial values herepublic class MyProgramTest { MyProgram program; int someVariable;9Writing a JUnit test class, IIDefine a method (or several methods) to be executed before each testInitialize your variables in this method, so that each test starts with a fresh set of values@Beforepublic void setUp() { program = new MyProgram(); someVariable = 1000;}You can define one or more methods to be executed after each testTypically such methods release resources, such as filesUsually there is no need to bother with this method@Afterpublic void tearDown() {}10A simple exampleSuppose you have a class Arithmetic with methods int multiply(int x, int y), and boolean isPositive(int x)import org.junit.*;import static org.junit.Assert.*; public class ArithmeticTest {}@Testpublic void testMultiply() { assertEquals(4, Arithmetic.multiply(2, 2)); assertEquals(-15, Arithmetic.multiply(3, -5));}@Testpublic void testIsPositive() { assertTrue(Arithmetic.isPositive(5)); assertFalse(Arithmetic.isPositive(-5)); assertFalse(Arithmetic.isPositive(0));}11Assert methods IWithin a test,Call the method being tested and get the actual resultAssert what the correct result should be with one of the assert methodsThese steps can be repeated as many times as necessaryAn assert method is a JUnit method that performs a test, and throws an AssertionError if the test failsJUnit catches these Errors and shows you the resultstatic void assertTrue(boolean test)static void assertTrue(String message, boolean test)Throws an AssertionErrorif the test failsThe optional message is included in the Errorstatic void assertFalse(boolean test)static void assertFalse(String message, boolean test)Throws an AssertionErrorif the test fails12Example: Counter classFor the sake of example, we will create and test a trivial “counter” classThe constructor will create a counter and set it to zeroThe increment method will add one to the


View Full Document

Penn CIT 591 - JUnit Lecture

Documents in this Course
Stacks

Stacks

11 pages

Arrays

Arrays

30 pages

Arrays

Arrays

29 pages

Applets

Applets

24 pages

Style

Style

33 pages

JUnit

JUnit

23 pages

Java

Java

32 pages

Access

Access

18 pages

Methods

Methods

29 pages

Arrays

Arrays

32 pages

Methods

Methods

9 pages

Methods

Methods

29 pages

Vectors

Vectors

14 pages

Eclipse

Eclipse

23 pages

Vectors

Vectors

14 pages

Recursion

Recursion

24 pages

Animation

Animation

18 pages

Animation

Animation

18 pages

Static

Static

12 pages

Eclipse

Eclipse

23 pages

JAVA

JAVA

24 pages

Arrays

Arrays

29 pages

Animation

Animation

18 pages

Numbers

Numbers

21 pages

JUnit

JUnit

23 pages

Access

Access

18 pages

Applets

Applets

24 pages

Methods

Methods

30 pages

Buttons

Buttons

20 pages

Java

Java

31 pages

Style

Style

28 pages

Style

Style

28 pages

Load more
Download JUnit Lecture
Our administrator received your request to download this document. We will send you the file to your email shortly.
Loading Unlocking...
Login

Join to view JUnit Lecture and access 3M+ class-specific study document.

or
We will never post anything without your permission.
Don't have an account?
Sign Up

Join to view JUnit Lecture 2 2 and access 3M+ class-specific study document.

or

By creating an account you agree to our Privacy Policy and Terms Of Use

Already a member?