Премини към съдържанието
Millennium Falcon

Unit тестове на Spring MVC приложение

    Препоръчан отговор


    От скоро започнах да се занимавам с тестове и за целта си направих малко уеб приложение, за да пробвам да напиша няколко теста. Тестовете минават, но не знам дали съм ги направил правилно и като цяло има ли смисъл от въпросните тестове. Ще копирам кода, за да събера мнения.

     

    @RunWith(SpringJUnit4ClassRunner.class)
    @ContextConfiguration(locations = { "/applicationContext.xml" })
    @WebAppConfiguration
    @RequestMapping("books")
    public class BookControllerTest {
    
    	@Mock
    	private BookService bookService;
    
    	@InjectMocks
    	private BookController bookController;
    
    	private MockMvc mockMvc;
    
    	@Before
    	public void before() {
    		MockitoAnnotations.initMocks(this);
    		this.mockMvc = MockMvcBuilders.standaloneSetup(bookController).build();
    	}
    
    	@Test
    	public void testGetAllBooks() {
    		Book book1 = new Book("4", "Book", "Book", 55);
    		Book book2 = new Book("7", "Book2", "Book2", 59);
    
    		when(bookService.getAllBooks()).thenReturn(Arrays.asList(book1, book2));
    	}
    
    	@Test
    	public void testGetProductByIdPositive() {
    		Book book = new Book("3", "book", "book", 5253);
    		String id = book.getId();
    		assertNotNull("Object can not have null id ", id);
    		Assertions.assertThat(book).isNotNull();
    		assertTrue("Found book id should be equal to id being searched", book.getId().equals("3"));
    	}
    
    	@Test(expected = AssertionError.class)
    	public void testGetProductByIdNegative() {
    		Book book = new Book("3", "book", "book", 5253);
    		String id = book.getId();
    		assertNotNull("Object can not have null id ", id);
    		Assertions.assertThat(book).isNotNull();
    		assertTrue("Found book id should be equal to id being searched", book.getId().equals(3));
    	}
    
    	@Test
    	public void testGetProductsByCategoryPositive() {
    		Book book = new Book();
    		book.setCategory("algorithms");
    		String category = book.getCategory();
    		assertNotNull("Object can not have null id ", category);
    		Assertions.assertThat(book).isNotNull();
    		assertTrue("Found book id should be equal to id being searched", book.getCategory().equals("algorithms"));
    	}
    
    	@Test(expected = AssertionError.class)
    	public void testGetProductsByCategoryNegative() {
    		Book book = new Book();
    		book.setCategory("algorithms");
    		String category = book.getCategory();
    		assertNotNull("Object can not have null id ", category);
    		Assertions.assertThat(book).isNotNull();
    		assertTrue("Found book id should be equal to id being searched", book.getCategory().equals(2));
    	}
    
    }

    От тук надолу ще копирам кода, който съм тествал.

    @Controller
    @RequestMapping("books")
    public class BookController {
    
    	@Autowired
    	BookService bookService;
    
    	@RequestMapping("/all")
    	public String getAllbooks(Model model) {
    		model.addAttribute("allBooks", bookService.getAllBooks());
    		return "books";
    	}
    
    @RequestMapping("{category}")
    	public String getProductsByCategory(Model model, @PathVariable("category") String productCategory) {
    		model.addAttribute("allBooks", bookService.getBookByCategory(productCategory));
    		return "books";
    	}
    
    @RequestMapping("/product")
    	public String getProductById(@RequestParam("id") String productId, Model model) {
    		model.addAttribute("allBooks", bookService.getBookById(productId));
    		return "book";
    	}
    
    public interface BookService {
    
    	List<Book> getAllBooks();
    
    	Book getBookById(String productID);
    
    	List<Book> getBookByCategory(String category);
    }
    
    @Repository
    public class InMemoryBookRepository implements BookRepository {
    
    	private List<Book> listOfProducts = new ArrayList<Book>();
    
    	public InMemoryBookRepository() {
    		Book java = new Book("1", "Java", "java", 44);
    		java.setDescription("Some algorithms");
    		java.setCondition("Available");
    		java.setUnitsInStock(4);
    		java.setCategory("algorithms");
    		java.setManufacturer("some manufacturer");
    		listOfProducts.add(java);
    		Book java2 = new Book("2", "Java2", "java2", 5352);
    		java2.setDescription("Programming concepts");
    		java2.setCondition("Available");
    		java2.setUnitsInStock(100);
    		java2.setCategory("first steps in programming");
    		java2.setManufacturer("some manufacturer");
    		listOfProducts.add(java2);
    	}
    
    	@Override
    	public List<Book> getAllBooks() {
    		return listOfProducts;
    	}
    
    	@Override
    	public Book getBookById(String bookId) {
    		Book bookById = null;
    		for (Book book : listOfProducts) {
    			if (book != null && book.getId() != null && book.getId().equals(bookId)) {
    				bookById = book;
    				break;
    			}
    		}
    		if (bookId == null) {
    			throw new IllegalArgumentException("No products found with the product id: " + bookId);
    		}
    		return bookById;
    	}
    
    	@Override
    	public List<Book> getBookByCategory(String category) {
    		List<Book> productsByCategory = new ArrayList<Book>();
    		for (Book book : listOfProducts) {
    			if (category.equalsIgnoreCase(book.getCategory())) {
    				productsByCategory.add(book);
    			}
    		}
    		return productsByCategory;
    	}
    
    }

     

    Сподели този отговор


    Линк към този отговор
    Сподели в други сайтове

    Регистрирайте се или влезете в профила си за да коментирате

    Трябва да имате регистрация за да може да коментирате това

    Регистрирайте се

    Създайте нова регистрация в нашия форум. Лесно е!

    Нова регистрация

    Вход

    Имате регистрация? Влезте от тук.

    Вход


    ×

    Информация

    Този сайт използва бисквитки (cookies), за най-доброто потребителско изживяване. С използването му, вие приемате нашите Условия за ползване.