스프링 부트 프로젝트(레스토랑 예약 사이트 만들기)-Test Driven Development 05강 해석

Psj·2021년 12월 14일
0

#1

클래스명 오른쪽 클릭후 화면과같이 누르면 테스트코드가 생성된다.

test/~/domain/RestaurantTests.java

package kr.co.fastcampus.eatgo.domain;

import org.junit.Test;

import static org.hamcrest.core.Is.is; // assertThat()에서 is 사용시 이것사용
import static org.junit.Assert.*;

public class RestaurantTests {

    @Test // 테스트코드 작성시 사용하는 어노테이션
    public void creation(){ // Restaurant 객체 생성 테스트

        Restaurant restaurant = new Restaurant(); // Restaurant 객체 생성
        assertThat(restaurant.getName(), is("Bob zip"));
        // assertThat은 어떤것은 어떤것이어야된다는 가정문이다.
        // is()를 사용하면 왼쪽의 restaurant.getName() 값이 is("Bob zip")와 같아야 한다는 것이다.
    }
}

main/~/domain/Restaurant.java

package kr.co.fastcampus.eatgo.domain;

public class Restaurant {


    public String getName() {
        return "Bob zip";
    }
}

이렇게 하면 테스트가 통과 된다.
하지만 이렇게 Restaurant 클래스의 return값이 항상 return "Bob zip"; 이 되게 고정시킬수만은 없는 노릇이다.


#2

그러므로 객체를 생성시 이름을 넣어줄수 있도록 Restaurant클래스를 생성자를 넣는 코드로 수정한다.

test/~/domain/RestaurantTests.java

package kr.co.fastcampus.eatgo.domain;

import org.junit.Test;

import static org.hamcrest.core.Is.is; // assertThat()에서 is 사용시 이것사용
import static org.junit.Assert.*;

public class RestaurantTests {

    @Test // 테스트코드 작성시 사용하는 어노테이션
    public void creation(){ // Restaurant 객체 생성 테스트

        Restaurant restaurant = new Restaurant("Bob zip"); // Restaurant 생성자 이용해 객체 생성
        
        assertThat(restaurant.getName(), is("Bob zip"));
        // assertThat은 어떤것은 어떤것이어야된다는 가정문이다.
        // is()를 사용하면 왼쪽의 restaurant.getName() 값이 is("Bob zip")와 같아야 한다는 것이다.
    }
}

main/~/domain/Restaurant.java

package kr.co.fastcampus.eatgo.domain;

public class Restaurant {

    private final String name;

    public Restaurant(String name) { // 생성자
        this.name = name;
    }

    public String getName() {
        return name;
    }
}

생성자를 이용한 캡슐화방식으로 getName()메서드로 생성자에서 생성한 리턴값을 불러낼수 있다.


#3

이번에는 이름과 주소를 가진 객체를 생성하고 간단한 정보를 확인하는 테스트를 해보겠다.

test/~/domain/RestaurantTests.java

package kr.co.fastcampus.eatgo.domain;

import org.junit.Test;

import static org.hamcrest.core.Is.is; // assertThat()에서 is 사용시 이것사용
import static org.junit.Assert.*;

public class RestaurantTests {

    @Test // 테스트코드 작성시 사용하는 어노테이션
    public void creation(){ // Restaurant 객체 생성 테스트

        Restaurant restaurant = new Restaurant("Bob zip", "Seoul"); // Restaurant 객체 생성

        assertThat(restaurant.getName(), is("Bob zip")); //이름 확인
        assertThat(restaurant.getAddress(), is("Seoul")); //주소 확인
        
        // assertThat은 어떤것은 어떤것이어야된다는 가정문이다.
        // is()를 사용하면 왼쪽의 restaurant.getName() 값이 is("Bob zip")와 같아야 한다는 것이다.


    }

    public void information(){ // Restaurant 정보 테스트
        Restaurant restaurant = new Restaurant("Bob zip", "Seoul"); // 이름과 주소를 생성자에 넣어 객체생성

        assertThat(restaurant.getInformaion(), is("Bob zip in Seoul")); //정보 확인
    }
}

main/~/domain/Restaurant.java

package kr.co.fastcampus.eatgo.domain;

public class Restaurant {

    private final String name;
    private final String address;

    public Restaurant(String name, String address) {
        this.name = name;
        this.address = address;
    }

    public String getName() { // 생성된 객체의 이름 반환
        return name;
    }

    public String getAddress() { // 생성된 객체의 주소 반환
        return address;
    }

    public String getInformaion() { // 생성된 객체의 정보 반환
        return name + " in " + address;
    }
}
profile
Software Developer

0개의 댓글