Премини към съдържанието
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;
	}

}

 

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


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

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

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

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

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

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

Вход

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

Вход


×

Информация

Поставихме бисквитки на устройството ви за най-добро потребителско изживяване. Можете да промените настройките си за бисквитки, или в противен случай приемаме, че сте съгласни с нашите условия за ползване.