Unit Testing with JUnit

Embed Size (px)


Unit Testing with JUnit. Dan Fleck Spring 2010. What is Unit Testing?. A procedure to validate individual units of Source Code Example: A procedure, method or class Validating each individual piece reduces errors when integrating the pieces together later. Automated Unit Tests with JUnit. - PowerPoint PPT Presentation

Text of Unit Testing with JUnit

  • Unit Testing with JUnitDan FleckSpring 2010

  • What is Unit Testing?A procedure to validate individual units of Source CodeExample: A procedure, method or class Validating each individual piece reduces errors when integrating the pieces together later

  • Automated Unit Tests with JUnitJunit is a unit testing framework for Java Allows you to write unit tests in Java using a simple interfaceAutomated testing enables running and rerunning tests very easily and quickly

  • An example unit test@Testpublic void testCellChangePropagates() { Spreadsheet sheet = new Spreadsheet(); sheet.put("A1", "5"); sheet.put("A2", "=A1"); sheet.put("A1", "10"); assertEquals("10",sheet.get("A2")); }

  • Junit AssertDuring a test use Asserts to specify if the test passed or failed

    org.junit.Assert allows you to test if certain ideas hold by asserting results: http://junit.sourceforge.net/javadoc/ assertEquals(expected, actual) assertEquals(message, expected, actual) assertEquals(expected, actual, delta)assertEquals(message, expected, actual, delta) assertFalse(condition) assertFalse(message, condition) Assert(Not)Null(object) Assert(Not)Null(message, object) Assert(Not)Same(expected, actual) Assert(Not)Same(message, expected, actual) assertTrue(condition) assertTrue(message, condition)

  • Junit Methods Java annotations@BeforeClass // Run before all tests in class public static void setUpClass() throws Exception {}

    @AfterClass // Run after all tests in classpublic static void tearDownClass() throws Exception {}

    @Before // Run before each test in classpublic void setUp() {}

    @After // Run after each test in classpublic void tearDown() {}

    @Testpublic void testMain() {http://www.cavdar.net/2008/07/21/junit-4-in-60-seconds/

  • Junit with NetbeansNew FileChoose file type: JunitChoose Test for Existing ClassJunit test with all stubs created for that classFill in the individual testsRun Tests (Netbeans options)Note: If this option doesnt exist use New File->Other->Junit->Test for existing class

  • Junit Documentation/Tutorialshttp://junit.sourceforge.net/ http://code.google.com/p/t2framework/wiki/JUnitQuickTutorial

    http://junit.sourceforge.net/doc/testinfected/testing.htm (older)

  • Lines of code coverage analysisDetermining which lines of code your tests have exercised and which they have notAllows you to detect if your unit tests (or system tests) are adequately covering all possibilities or notThis is just one way to test

  • Lines of code coverage analysis with NetbeansInstall Unit Test Code Coverage Viewer module(See next slide for instructions)Write a Unit TestRun test and view highlighted code

  • Installing the Code Coverage PluginGo into Netbeans -> Tools -> Plugins Search for "Code Coverage" and install it. If you don't see it in the list of available plugins, go to the "Settings" tab and check "Netbeans Beta, reload the catalog, and then try again. If you don't see Netbeans Beta in the list on Settings, add the following source for plugins: Netbeans Beta http://updates.netbeans.org/netbeans/updates/6.8/uc/final/beta/catalog.xml.gz

  • How do you you combine coverage with traditional system test scripts? Traditional system testing uses scripts1. Enter salary2. Enter number of dependents3. Click Calculate Taxes button

    To combine this with coverage, launch the GUI while capturing coverage statisticsRun the test case to determine coverage

  • How to write test casesSee sample system test casehttp://www.cs.gmu.edu/~kdobolyi/cs421/SAMPLESystemTestCase.docSee sample unit test casehttp://www.cs.gmu.edu/~kdobolyi/cs421/Main.javahttp://www.cs.gmu.edu/~kdobolyi/cs421/Triangle.javahttp://www.cs.gmu.edu/~kdobolyi/cs421/Triangle.java

  • Junit ExampleTry to write unit tests for /javacode/JUnitRobotExample

  • Class Exercise - Lets try it out! Using the SystemRequirementsSpecificationExample.doc Each team pick a use caseDocument the overall system or unit tests you would write to testDo the same for a non-functional requirement (sec 5)

  • SummaryUnit tests can help test the details of your program Automated unit tests provide constant visibility and easy retestingTest coverage supplies valuable information when running both unit tests and system tests

  • Unit test to use with system test case public void testMain() { SuDoku sFrame = new SuDoku(); // Launch the GUI

    // While GUI is showing while (sFrame.isDisplayable()) { try { Thread.sleep(100); } catch (Exception e) { e.printStackTrace(); } } Assert.assertEquals(true,true); }

    Nov 17, 2009 got here Tues*See javacode/JUnitExample2*