JUnit Best Practices – Use correct assertion

Always do a strong assertion against the returned state from a unit. Avoid assertion like the collection size shall be greater than zero. A better assertion could be checking the size of the collection and content of the collection.

Complete source code can be found here.

package com.ourownjava.unit.under.test;

import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotNull;
import static org.junit.Assert.assertTrue;

import java.util.List;

import org.junit.Before;
import org.junit.Test;

import com.ourownjava.model.Apple;

/**
 * 
 * @author Sanju Thomas
 *
 */
public class AppleServiceTest {
	
	private AppleService appleService;
	
	@Before
	public void setUp(){
		appleService = new AppleService();
	}
	
	@Test
	public void shouldGet100ApplesBadAssertion(){
		final List apples = appleService.getApple(100);
		assertNotNull(apples);
	}
	
	@Test
	public void shouldGet100ApplesBadAssertion1(){
		final List apples = appleService.getApple(100);
		assertTrue(apples.size() > 0);
	}
	
	@Test
	public void shouldGet100ApplesGoodAssertion(){
		final List apples = appleService.getApple(100);
		assertEquals(100, apples.size());
	}
}


package com.ourownjava.unit.under.test;

import java.util.ArrayList;
import java.util.List;

import com.ourownjava.model.Apple;

/**
 * 
 * @author Sanju Thomas
 *
 */
public class AppleService {
	
	public List getApple(final Integer numberOfApples){
		final List apples = new ArrayList();
		for(int i = 0; i < numberOfApples; i++){
			final Apple apple = new Apple();
			apples.add(apple);
		}
		return apples;
	}
}

package com.ourownjava.model;

/**
 * 
 * @author Sanju Thomas
 *
 */
public class Apple {}

Leave a comment

Your email address will not be published. Required fields are marked *