📘 Premium Read: Access my best content on Medium member-only articles — deep dives into Java, Spring Boot, Microservices, backend architecture, interview preparation, career advice, and industry-standard best practices.
🎓 Top 15 Udemy Courses (80-90% Discount): My Udemy Courses - Ramesh Fadatare — All my Udemy courses are real-time and project oriented courses.
▶️ Subscribe to My YouTube Channel (176K+ subscribers): Java Guides on YouTube
▶️ For AI, ChatGPT, Web, Tech, and Generative AI, subscribe to another channel: Ramesh Fadatare on YouTube
Create Book Class
package junit5.bookstore.model;
public class Book {
private String bookId;
private String title;
private String publisher;
public Book(String bookId, String title, String publisher) {
this.bookId = bookId;
this.title = title;
this.publisher = publisher;
}
public String getBookId() {
return bookId;
}
public void setBookId(String bookId) {
this.bookId = bookId;
}
public String getTitle() {
return title;
}
public void setTitle(String title) {
this.title = title;
}
public String getPublisher() {
return publisher;
}
public void setPublisher(String publisher) {
this.publisher = publisher;
}
}
Create BookService Class
package junit5.bookstore.service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import junit5.bookstore.model.Book;
public class BookService {
private List<Book> listOfBooks = new ArrayList<>();
public void addBook(Book book) {
listOfBooks.add(book);
}
public List<Book> books(){
return Collections.unmodifiableList(listOfBooks);
}
public Book getBookById(String bookId) {
for(Book book : listOfBooks) {
if(bookId.equals(book.getBookId())) {
return book;
}
}
return null;
}
public String[] getBookIdsByPublisher(String publisher) {
List<String> bookIds = new ArrayList<>();
for(Book book : listOfBooks) {
if(publisher.equals(book.getPublisher())) {
bookIds.add(book.getBookId());
}
}
return bookIds.toArray(new String[bookIds.size()]);
}
public List<String> getBookTitlesByPublisher(String publisher) {
List<String> bookTitles = new ArrayList<>();
for(Book book : listOfBooks) {
if(publisher.equals(book.getPublisher())) {
bookTitles.add(book.getTitle());
}
}
return bookTitles;
}
}
Write JUnit test to use assertTimeout() method
package junit5.assertions.assertTimeout;
import static org.junit.jupiter.api.Assertions.assertEquals;
import static org.junit.jupiter.api.Assertions.assertTimeout;
import java.time.Duration;
import java.util.ArrayList;
import java.util.List;
import org.junit.jupiter.api.Test;
import junit5.bookstore.model.Book;
import junit5.bookstore.service.BookService;
public class AssertTimeoutDemo {
@Test
public void assertTimeoutWithNoMessage() {
BookService bookService = new BookService();
for(int i = 1; i <= 1000; i++) {
bookService.addBook(new Book(String.valueOf(i), "Head First Java", "Wrox"));
}
List<String> actualTitles = new ArrayList<>();
assertTimeout(Duration.ofMillis(1), () -> {
actualTitles.addAll(bookService.getBookTitlesByPublisher("Wrox"));
});
assertEquals(1000, actualTitles.size());
}
@Test
public void assertTimeoutWithMessage() {
BookService bookService = new BookService();
for(int i = 1; i <= 1000; i++) {
bookService.addBook(new Book(String.valueOf(i), "Head First Java", "Wrox"));
}
List<String> actualTitles = new ArrayList<>();
assertTimeout(Duration.ofMillis(1), () -> {
actualTitles.addAll(bookService.getBookTitlesByPublisher("Wrox"));
}, "Performance issues with getBookTitlesByPublisher() method !");
assertEquals(1000, actualTitles.size());
}
@Test
public void assertTimeoutWithMessageSupplier() {
BookService bookService = new BookService();
for(int i = 1; i <= 1000; i++) {
bookService.addBook(new Book(String.valueOf(i), "Head First Java", "Wrox"));
}
List<String> actualTitles = new ArrayList<>();
assertTimeout(Duration.ofMillis(1), () -> {
actualTitles.addAll(bookService.getBookTitlesByPublisher("Wrox"));
}, () -> "Performance issues with getBookTitlesByPublisher() method !");
assertEquals(1000, actualTitles.size());
}
}
Comments
Post a Comment
Leave Comment