David Moore
David Moore

Reputation: 29

How to write Unit Test for String equals Java?

I am writing Junit to Update Menu Item in Menu List Item. In process, It will check every Menu Item names in Menu Item Lists to find if anything equals with changeItem or not. If it equals then set new values for MenuItem Object. However, I doesn't know how to write Unit test for this service.

My code:

   @Override
public void updateMenu(DailyMenu dailyMenu) {
    try {
        menuPrinter.printMenu(dailyMenu);
        System.out.print("Insert menu item want to update:");
        String changeItem = scanner.nextLine();

        dailyMenu.getMenuItemList().forEach((MenuItem menuItem)->{
            if(menuItem.getNames().equals(changeItem)){
                System.out.print("\nInsert name: ");
                menuItem.setNames(scanner.nextLine());
                System.out.print("Insert description: ");
                menuItem.setDescription(scanner.nextLine());
                System.out.print("Insert image: ");
                menuItem.setImage(scanner.nextLine());
                System.out.print("Insert price:");
                menuItem.setPrice(scanner.nextFloat());
            }
        });
    } catch (NullPointerException | IllegalStateException exception){
        System.out.println(exception.getMessage());
    } catch (InputMismatchException exception){
        System.out.print(new InputMismatchException("Menu item quantity must be number !!!").getMessage());
    }
}

Upvotes: 0

Views: 93

Answers (1)

Franz
Franz

Reputation: 41

Don't sure to answer but like i see this quickly :

@Test
void updateMenu(){
DailyMenu dailyMenu = DailyMenu();
MenuItem menuItem= new MenuItem();
menuItem.setNames("Pasta");
dailyMenu.getMenuItemList().add(dailyMenu);

Scanner mockScanner = mock(Scanner.class);
//set up the scanner
 when(mockScanner.nextLine()).thenReturn("Pasta");
InputOutput inputOutput= new InputOutput(mockScanner);
   
yourClasse.updateMenu();

 assertEquals("Pasta", inputOutput.getInput());
assertEquals(dailyMenu.getNames(),inputOutput.getInput());
 }

Hope it can help you.

Upvotes: 1

Related Questions