package com.in28minutes.spring.example1; import static org.junit.Assert.assertEquals; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.context.annotation.ComponentScan; import org.springframework.context.annotation.Configuration; import org.springframework.stereotype.Component; import org.springframework.test.context.ContextConfiguration; import org.springframework.test.context.junit4.SpringJUnit4ClassRunner; @Configuration @ComponentScan(basePackages = { "com.in28minutes" }) class SpringContext { } @RunWith(SpringJUnit4ClassRunner.class) @ContextConfiguration(classes = SpringContext.class) public class TodoBusinessTest { @Autowired TodoBusinessService businessService; @Test public void testGetTodosAboutSpring(){ List<String> todos = businessService.retrieveTodosRelatedToSpring("Ranga"); assertEquals(1,todos.size()); assertEquals("Learn Spring",todos.get(0)); } } @Component class TodoBusinessService{ @Autowired TodoDataService dataService ;//= new TodoDataServiceStub() List<String> retrieveTodosRelatedToSpring(String user){ List<String> todosRelatedToSpring = new ArrayList<String>(); List<String> todos = dataService.retrieveTodos(user); for(String todo:todos){ if(todo.contains("Spring")){ todosRelatedToSpring.add(todo); } } return todosRelatedToSpring; } } class TodoDataServiceStub implements TodoDataService{ public List<String> retrieveTodos(String user){ return Arrays.asList("Learn Spring","Learn Struts","Learn to Dance"); } } interface TodoDataService{ List<String> retrieveTodos(String user); } @Component class TodoDataServiceRealImpl implements TodoDataService{ public List<String> retrieveTodos(String user){ return Database.retrieveTodos(user); } } class Database{ static List<String> retrieveTodos(String user){ throw new RuntimeException("Database Down"); //return Arrays.asList("Learn Spring","Learn Struts","Learn to Dance"); } }