Pages

Wednesday, March 13, 2013

A Simple JUnit example

JUnit is unit testing tool/framework for the Java programming language.

The methods that we want to test must be annotated with @Test annotation.

Look at the below sample code for quick reference.

Jar : Include junit-4.x.jar in your build path.

package com.j4b.junit;

import static org.junit.Assert.assertEquals;
import org.junit.Test;

class HelloWorld {
 int x = 0;
 
 public String sayHello(){
  if(x == 0)
   throw new NullPointerException();
  return "Hello World";
 }

}

public class TestHelloWorld {
 
 @Test (expected= NullPointerException.class)
 public void testSayHello(){
  HelloWorld h = new HelloWorld();
  assertEquals("Hello World",h.sayHello());
 }
}
Now run the above code as JUnit Test and check.

Observe in the above code that - testSayHello() is a public method and returns void.

assertEquals() takes two params, 1st one is the Expected output and 2nd is the actual method we are calling.

@Test (expected= NullPointerException.class) - is a test method and it may throw a NullPointerException. So if even though it throws NullPointerException, JUnit Test will pass.

Monday, March 11, 2013

Does finally block executes when try block has a return statement in Java?

You know finally block is useful for preventing resource leaks.

Look at the below code, may be interesting for you if you didn't tried yet.

package com.j4b.samples;

public class FinallyReturn {
	
	@SuppressWarnings("finally")
	public static String display(String hi){
		try{
			System.out.println("Hello");
			return hi;
		}
		finally{
			System.out.println("in finally");
			return "Hello dude";
		}
	}
	public static void main(String[] args) {
		String str = display("Hi Praveen");
		System.out.println("str : "+str);
	}
}



output:
Hello
in finally
str : Hello dude

Now try to give System.exit(0); before return hi; statement at line 9.
now run the sample code and check the output.