test 공부 && 계산기 만들기

1 minute read

java로 계산기 만들기 했다.

enum 처음 써봤다.


enum

열거형으로 서로 연관된 거 집합으로 정돈하기에 좋다. 예를 들어 사칙연산. 문맥을 담아 정리한다고 생각하자.

  • 데이터 간의 관계 표현에 용이
  • 상태와 행위를 한번에 정리
  • 데이터 그룹 관리에 용이

함수형 인터페이스

public enum Operator {
    PLUS((operand1, operand2) -> operand1 + operand2, "+"),
    MINUS((operand1, operand2) -> operand1 - operand2, "-"),
    MULTIPLY((operand1, operand2) -> operand1 * operand2, "*"),
    DIVIDE((operand1, operand2) -> operand1 / operand2, "/");

    private final String operator;
    private BiFunction<Double, Double, Double> calculate;

    Operator(BiFunction<Double, Double, Double> calculate, String operator) {
        this.calculate = calculate;
        this.operator = operator;
    }
}

위와 같다고 보면 된다. 상당히 많은 function들이 존재한다.

  • 내가 사용한 BiFunction의 경우 두개의 매개변수를 받아서 하나의 자료형으로 리턴하는 것이다.
  • Function의 경우 하나의 매개변수, 하나의 return한다. 가장 기본형이다. 여기서 기본을 받아 특정 타입을 리턴할 수도, 특정 타입을 받아 기본을 리턴할 수도, 두개 받아서 특정 타입/기본을 리턴할 수도 있다.
  • Suppliers는 매개변수를 받지 않고 하나 return
  • Consumers는 매개변수 받고 리턴은 없다.
  • Predicates는 하나 매개변수 받아 boolean으로 리턴한다.
  • Operators는 하나의 매개변수 받아 동일한 타입으로 리턴

함수/클래스 명명

클래스는 첫문자 대문자.
클래스는 명사형 명명.
함수는 동사형 명명.
is는 주로 boolean에 적용.
void 타입의 경우 적용하고 exception 있으면 check 사용.

단위테스트 어노테이션

  • @ValueSource 배열이나 값, 문자열을 메소드로 전달
  • @EnumSource enum, 집합을 효율적으로 테스트, iterator 적용에도 용이
  • @CsvSource csv 포맷으로 테스팅 편리하게 진행
    csv 포맷이란 , 단위로 구분하는 것
    따라서 , 단위로 편리하게 값 넘길 수 있다.
  • @MethodSource
    보다 복잡한 객체를 쉽게 생성해서 테스트

Tags:

Categories:

Updated: