본문 바로가기
Java

MVC Framework 만들어보기 / 객체지향 패러다임, 간단한 테스트 코드

by 리잼 2023. 4. 6.
반응형

객체지향 4가지 특징

  • 추상화 ( Abstraction )
  • 다형성 ( Polymorphism )
  • 캡슐화 ( Encapsulation )
  • 상속 ( Inheritance )

객체지향 설계 원칙 5가지 (SOLID)

  1. SRP : Single Responsibility Principle (단일 책임의 원칙)
  2. OCP : Open/Closed Principle (개방 폐쇄의 원칙)
  3. LSP : Liskov’s Substitution Principle (리스코프 치환의 원칙)
  4. ISP : Interface Segregation Principle (인터페이스 분리의 원칙)
  5. DIP : Dependency Inversion Principle (의존성 역전의 원칙)

객체지향 설계 및 구현

  1. 도메인을 구성하는 객체에는 어떤 것들이 있는지 고민
  2. 객체들 간의 관계를 고민
  3. 동적인 객체를 정적인 타입으로 추상화해서 도메인 모델링 하기
  4. 협력을 설계
  5. 객체들을 포괄하는 타입에 적절한 책임을 할당
  6. 구현하기 

사칙연산 계산기 구현

사칙연산 계산기 구현
• 요구사항
• 간단한 사칙연산을 할 수 있다.
• 양수로만 계산할 수 있다.
• 나눗셈에서 0을 나누는 경우 IllegalArgument 예외를 발생시킨다.
• MVC패턴(Model-View-Controller) 기반으로 구현한다.

 

간단한 테스트 코드 작성

CalculatorTest.java

package org.example;

import org.junit.jupiter.api.DisplayName;
import org.junit.jupiter.api.Test;

import static org.assertj.core.api.Assertions.assertThat;
/**
 * 사칙연산 계산기 구현
 * • 요구사항
 * • 간단한 사칙연산을 할 수 있다.
 * • 양수로만 계산할 수 있다.
 * • 나눗셈에서 0을 나누는 경우 IllegalArgument 예외를 발생시킨다.
 * • MVC패턴(Model-View-Controller) 기반으로 구현한다.
 */
public class CalculatorTest {

    // 1 + 2 --> Calculator
    //    3 <--  Calculaotr
    @DisplayName("덧셈연산 수행")
    @Test
    void additionTest() {
        int result = Calculator.calculate(1, "+", 2);

        assertThat(result).isEqualTo(3);
    }

    @DisplayName("덧셈연산 수행")
    @Test
    void subtractionTest() {
        int result = Calculator.calculate(1, "-", 2);

        assertThat(result).isEqualTo(-1);
    }
}

 

Calculator.java

public class Calculator {
    public static int calculate(int operand1, String operator, int operand2 ) {
        if("+".equals(operator)) {
            return operand1 + operand2;
        } else if ("-".equals(operator)){
            return operand1 - operand2;
        }
        return 0;
    }
}

성공

코드를 한 번에 연산을 할 수 있도록 수정해 줬다.

@ParameterizedTest

  • 하나의 테스트 메소드로 여러개의 파라미터의 테스트를 수행 할 수 있도록 해준다.

@MethodSource

  • 테스트 메소드에 맞는 메소드이름을 value에 넣어 사용가능

테스트 결과

 

후의 강의는 비슷한내용 반복이기도하고

너무 빨라서 정리하기가 힘들것 같아서 중요한 내용만 정리하도록 해야겠다.

반응형