Junit tutorial
This presentation is the property of its rightful owner.
Sponsored Links
1 / 26

JUnit Tutorial PowerPoint PPT Presentation


  • 149 Views
  • Uploaded on
  • Presentation posted in: General

JUnit Tutorial. Hong Qing Yu Nov 2005. JUnit Tutorial. The testing problems The framework of JUnit A case study JUnit tool Practices. The Testing Problems. Should write. Do. programmers. few. Why?. I am so busy. It is difficult. The Testing Problems.

Download Presentation

JUnit Tutorial

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.While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server.


- - - - - - - - - - - - - - - - - - - - - - - - - - E N D - - - - - - - - - - - - - - - - - - - - - - - - - -

Presentation Transcript


Junit tutorial

JUnit Tutorial

Hong Qing Yu

Nov 2005


Junit tutorial1

JUnit Tutorial

  • The testing problems

  • The framework of JUnit

  • A case study

  • JUnit tool

  • Practices


The testing problems

The Testing Problems

Should write

Do

programmers

few

Why?

I am so busy

It is difficult


The testing problems1

The Testing Problems

Programmers need such kind of tool:

“Writing a few lines of code, then a test that should run, or even better, to write a test that won't run, then write the code that will make it run.”

JUnit is that kind of tool!


Junit tutorial2

JUnit Tutorial

  • The testing problems

  • The framework of JUnit

  • A case study

  • JUnit tool

  • Practices


The framework of junit

The Framework of JUnit


Junit tutorial3

JUnit Tutorial

  • The testing problems

  • The framework of JUnit

  • A case study

  • JUnit tool

  • Practices


A case study

A Case Study

class Money {    

private int fAmount;    

private String fCurrency;   

}

public Money(int amount, String currency) {  

fAmount= amount;        

fCurrency= currency;     }

public int amount() {         return fAmount;     }

public String currency() {         return fCurrency;     }

public Money add(Money m) {    

return new Money(amount()+m.amount(), currency()); }


How to write a testcase

How to Write A TestCase

public class MoneyTest extends TestCase {    

//…    

public void testSimpleAdd() {        

Money m12CHF= new Money(12, "CHF");  // (1)        

Money m14CHF= new Money(14, "CHF");

Money expected= new Money(26, "CHF");

Money result= m12CHF.add(m14CHF);    // (2)

Assert.assertTrue(expected.equals(result));     // (3)  

}

}

(1) Creates the objects we will interact with during the test. This testing context is commonly referred to as a test's fixture. All we need for the testSimpleAdd test are some Money objects.

(2) Exercises the objects in the fixture.

(3) Verifies the result


Assert

Assert

  • 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)


Structure

Structure

  • setUp()

    Storing the fixture's objects in instance variables of your TestCase subclass and initialize them by overriding the setUp method

  • tearDown()

    Releasing the fixture’s

  • run()

    Defining how to run an individual test case.

    Defining how to run a test suite.

  • testCase()


Structure of writing a test

Structure of Writing A Test

public class MoneyTest extends TestCase {    

private Money f12CHF;    

private Money f14CHF;

protected void setUp() {        

f12CHF= new Money(12, "CHF");        

f14CHF= new Money(14, "CHF");     }

public void testSimpleAdd() {    

Money expected= new Money(26, "CHF");    

Money result= f12CHF.add(f14CHF);    

Assert.assertTrue(expected.equals(result)); }

TestCase test= new MoneyTest("simple add") {    

public void runTest() {         testSimpleAdd();     }

}

}


Design test cases

Design Test Cases

  • The real world scenarios

  • The number boundaries

Smaller than 0 such as –1, -2, …, -100, …

0

Bigger than 0 such as 1, 2, …, 100…


The feedback to code

The Feedback to Code

class Money {    

private int fAmount;    

private String fCurrency;   

public Money(int amount, String currency) {  

fAmount= amount;        

fCurrency= currency;     }

public int amount() {         return fAmount;     }

public String currency() {         return fCurrency;     }

public Money add(Money m) {

if (m.amount()<=0) throw exception;

return new Money(amount()+m.amount(), currency());

}

}


Test case and test suite

Test Case and Test Suite

TestCase test= new MoneyTest("simple add")

{    

public void runTest() {        

testSimpleAdd();    

}

}

public static Test suite() {    

TestSuite suite= new TestSuite();    

suite.addTest(new MoneyTest("testEquals"));    

suite.addTest(new MoneyTest("testSimpleAdd"));    

return suite;

}


Static and dynamic run

Static and Dynamic Run

  • JUnit supports two ways of running single tests:

  • static

  • dynamic

    TestCase test= new MoneyTest("simple add")

    {    

    public void runTest() {        

    testSimpleAdd();    

    }

    }

    TestCase test= new MoneyTest("testSimpleAdd");

  • Since JUnit 2.0 there is an even simpler dynamic way. You only pass the class with the tests to a TestSuite and it extracts the test methods automatically.

    public static Test suite() { return new TestSuite(MoneyTest.class); }


Junit tutorial4

JUnit Tutorial

  • The testing problems

  • The framework of JUnit

  • A case study

  • JUnit tool

  • Practices


Junit

JUnit


Junit for eclipse

JUnit for Eclipse


Start to use it

Start to Use it

1. Download the latest version of JUnit from http://download.sourceforge.net/junit/

2. Installation

  • unzip the junit.zip file

  • addjunit.jar to the CLASSPATH. For example: set classpath=%classpath%;INSTALL_DIR\junit3\junit.jar

    3. Testing

    Test the installation by using either the batch or the graphical TestRunner tool to run the tests that come with this release. All the tests should pass OK.

    • for the batch TestRunner type:     java junit.textui.TestRunner junit.samples.AllTests

    • for the graphical TestRunner type:     java junit.awtui.TestRunner junit.samples.AllTests

    • for the Swing based graphical TestRunner type:     java junit.swingui.TestRunner junit.samples.AllTests

      Notice: The tests are not contained in the junit.jar but in the installation directory directly. Therefore make sure that the installation directory is on the class path

      Important: Don't install the junit.jar into the extension directory of your JDK installation.

      If you do so the test class on the files system will not be found. JUnit plug-in for Eclipse


Eclipse plug in

Eclipse plug-in

http://dev.eclipse.org/viewcvs/index.cgi/jdt-ui-home/plugins/org.eclipse.jdt.junit/org.eclipse.pde.junit_3.0.0.zip


Junit tutorial

  • The testing problems

  • The framework of JUnit

  • A case study

  • JUnit tool

  • Practices


Practices

Practices

BankAccount case study


More reading

More Reading

  • http://www.junit.org/index.htm

  • http://open.ncsu.edu/se/tutorials/junit/

  • http://www.cs.umanitoba.ca/~eclipse/10-JUnit.pdf

  • http://supportweb.cs.bham.ac.uk/documentation/tutorials/docsystem/build/tutorials/junit/junit.pdf

  • http://junit.sourceforge.net/javadoc/junit/framework/


Contact information

Contact information

[email protected]

Today’s slides can be find at

http://www.cs.le.ac.uk/people/hqy1/JUnit%20Tutorial.ppt


Thanks and questions

Thanks And Questions


  • Login