1 / 20

JUnit

JUnit. SWE 619 Summer 2007. What is JUnit?. Open source Java testing framework used to write and run repeatable automated tests JUnit features include: Assertions for testing expected results Test fixtures for sharing common test data Test suites for easily organizing and running tests

nevarezj
Download Presentation

JUnit

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. JUnit SWE 619 Summer 2007

  2. What is JUnit? • Open source Java testing framework used to write and run repeatable automated tests • JUnit features include: • Assertions for testing expected results • Test fixtures for sharing common test data • Test suites for easily organizing and running tests • Graphical and textual test runners SWE 619 (c) Aynur Abdurazik

  3. JUnit Architecture SWE 619 (c) Aynur Abdurazik

  4. Test Scenarios with JUnit • Used to test • A whole object • Part of an object - a method or some interacting methods • Interaction between several objects • A test case represents one scenario • A tester class contains more than one scenario • Each senario is written into one test method SWE 619 (c) Aynur Abdurazik

  5. Writing Tests for JUnit • Need to use the methods of the junit.framework.assert class • javadoc gives a complete description of its capabilities • Each of these methods checks some condition and reports back to the test runner whether the test failed or succeeded. • The test runner uses the result to update the display. All of the methods return void (i.e. they are procedures) SWE 619 (c) Aynur Abdurazik

  6. Writing Tests for JUnit – (cont’d) • A few representative methods of junit.framework.assert • assertTrue(boolean) • assertTrue(String, boolean) • assertEquals(Object, Object) • assertNull(Object) • fail(String) SWE 619 (c) Aynur Abdurazik

  7. Sample Assertions (cont’d) • static void assertEquals(boolean expected, boolean actual)           Asserts that two booleans are equal. • static void assertEquals(byte expected, byte actual)           Asserts that two bytes are equal. • static void assertEquals(char expected, char actual)           Asserts that two chars are equal. • static void assertEquals(double expected, double actual, double delta)           Asserts that two doubles are equal concerning a delta. • static void assertEquals(float expected, float actual, float delta)           Asserts that two floats are equal concerning a delta. • static void assertEquals(int expected, int actual)           Asserts that two ints are equal. • For a complete list, see • http://junit.sourceforge.net/javadoc/junit/framework/Assert.html SWE 619 (c) Aynur Abdurazik

  8. How to write test case • Two different ways for junit versions 3.X and 4.x. • In Junit 3.X • 1) import junit.framework.*2) extend TestCase. • 3) name the test methods with a prefix of ‘test’ • 4) validate conditions using one of the several assert methods SWE 619 (c) Aynur Abdurazik

  9. How to write test case (cont’d) • In Junit 4.0 and later: • Do not extend from Junit.framework.TestCase • Do not prefix the test method with ‘test’ • Use one of the assert methods • Run the test using JUnit4TestAdapter SWE 619 (c) Aynur Abdurazik

  10. Simple Example • public class Math {         static public int add(int a, int b) {                   return a + b;         } } SWE 619 (c) Aynur Abdurazik

  11. Example JUnit test case import junit.framework.*; public class TestMath extends TestCase {   public void testAdd() {         int num1 = 3;         int num2 = 2;         int total = 5;         int sum = 0;         sum = Math.add(num1, num2);         assertEquals(sum, total);   } }  SWE 619 (c) Aynur Abdurazik

  12. Testing theStack class public class Stack{ public String toString() { // EFFECTS: Returns the String representation of this Stack from the // top to the bottom. StringBuffer buf = new StringBuffer("{"); for (int i = size-1; i >= 0; i--) { if (i < (size-1)) { buf.append(", "); } buf.append(elements[i].toString()); } buf.append("}"); return buf.toString(); } public boolean repOk() { if (elements == null) return false; if (size != elements.length) return false; for (int i = 0; i < size; i++) { if (elements[i] == null) return false; } return true; } } SWE 619 (c) Aynur Abdurazik

  13. TestCases with JUnit 4.X for Stack • Necessary classes to be imported: import org.junit.After; import org.junit.Before; import org.junit.Test; import static org.junit.Assert.assertEquals; import junit.framework.JUnit4TestAdapter; SWE 619 (c) Aynur Abdurazik

  14. TestCases with JUnit (Cont’d) public class StackTest { private Stack stack; /** * setUp method using @Before annotation. * Method can be named anything. */ @Before public void runBeforeEachTest(){ stack = new Stack(); } SWE 619 (c) Aynur Abdurazik

  15. Test case with JUnit (cont’d) @Test public void testRepOk(){ boolean result = stack.repOk(); assertEquals(true, result); stack = stack.push(new Integer(1)); result = stack.repOk(); assertEquals(true, result); stack = stack.pop(); result = stack.repOk(); assertEquals(true, result); stack = stack.push(new Integer(1)); stack.top(); result = stack.repOk(); assertEquals(true, result); } SWE 619 (c) Aynur Abdurazik

  16. Test case with JUnit (cont’d) @Test public void testToString(){ stack = stack.push(new Integer(1)); stack = stack.push(new Integer(2)); assertEquals("{2, 1}", stack.toString()); } @After public void runAfterEachTest(){ stack = null; } public static junit.framework.Test suite(){ return new JUnit4TestAdapter(StackTest.class); } } SWE 619 (c) Aynur Abdurazik

  17. How to Run Tests • JUnit provides test drivers • Character-based test driver runs from the command line • GUI-based test driver-junit.swingui.TestRunner • allows to specify the test class to run, • "Run" button • examines the chosen class and finds all methods whose names begin with "test." • If a test fails, Junit gives the location of the failure and any exceptions that were thrown SWE 619 (c) Aynur Abdurazik

  18. JUnit Installation in Eclipse • In Eclipse, select Help->Software Updates->Find and Install • Choose 'Search For New Features to Install' and select 'Next' • Select 'New Remote Site' • Enter a name for this server: JUnit Factory • Enter (or copy/paste) this url: http://www.junitfactory.com/update/ • Install all plug-ins in the 'JUnit Factory' category and restart Eclipse SWE 619 (c) Aynur Abdurazik

  19. Generating Tests in Eclipse • Select a Java class in Eclipse and click the Generate Tests ( )button • When the JUnit Factory view says your test is done, click the link in the Result column to open it • Select the test and choose Run->Run As->Agitar JUnit Test from the main menu SWE 619 (c) Aynur Abdurazik

  20. Eclipse JUnit Plugin • See tutorial • http://open.ncsu.edu/se/tutorials/junit/ • http://www.laliluna.de/eclipse-junit-testing-tutorial.html SWE 619 (c) Aynur Abdurazik

More Related