JUnit User GuideAlthough the JUnit Jupiter programming model and extension model do not support JUnit 4 features such as Rules and Runners natively, it is not expected that source code maintainers will need to update all of their existing tests, test extensions, and custodocs.junit.org OverviewJUnit이란?JUnit은 세 개의 하위 프로젝트로 구성된 여러 모듈로 이루어진 테스트 프레임워크이다. JUNIT 6.0.0 = JUnit Platform + JUnit Jupiter ..
Spring
JUnit5는 개발자 테스트를 작성하는 데 도움을 주는 여러 새로운 기능을 제공한다. 그 중 하나가 parameterized test이다. parameterized test를 사용하면 하나의 테스트 메서드를 다양한 매개변수로 여러 번 실행할 수 있다. 의존성parameterized test를 사용하려면 junit-jupiter-params artifact를 프로젝트에 추가해야 한다. Maven을 사용하는 경우, `pom.xml`에 다음을 추가한다. org.junit.jupiter junit-jupiter-params 5.11.0 test Gradle을 사용하는 경우에는 다음과 같이 설정한다.testCompile("org.junit.jupiter:junit-jupiter-params:..
TDD란TDD는 코드를 작성하기 전에 단위 테스트를 작성하고, 해당 테스트를 통과시키기 위한 최소한의 코드를 작성한 후, 리팩토링하는 개발 방법론이다. 이 과정은 테스트가 실패한 것을 확인한 뒤, 테스트를 통과시키기 위해 코드를 수정하고, 다시 테스트와 코드를 개선하는 반복적인 사이클로 진행된다. 핵심은 프로덕션 코드보다 테스트 코드를 먼저 작성하는 데 있다. TDD의 궁극적인 목표는 작동하면서도 깔끔한 코드를 작성하는 것이다. TDD 사이클 새로운 기능을 위한 시나리오 나열시나리오에 대한 테스트 작성모든 테스트를 실행해 새로운 테스트가 실패하는지 확인테스트를 통과하기 위한 최소한의 코드 작성모든 테스트가 통과되도록 수정리팩토링을 통해 코드 개선이 과정을 새로운 기능마다 반복한다.TDD의 세 가지 규칙 ..
처음에는 무엇으로 푸시 알림을 보낼 지 고민한 끝에 이 글을 읽고 FCM을 사용하기로 결정했다. 플러터에서 사용해본 경험이 있고, 무료라는 점이 가장 큰 이유였다. 파이어베이스 설정1. 프로젝트 만들기 위의 버튼을 누르고, 프로젝트 이름을 넣고 생성하면 된다. 2. 앱 추가만들고 있는 앱을 추가하여 시작하면 된다.앱 등록을 위해 Android 패키지 이름에 프론트 패키지 이름을 넣는다. 여기서 주어지는 `google.services.json` 파일은 프론트 쪽에 넣어주면 된다. 자바로 설정 3. 비공개 키 다운로드프로젝트 설정 → 서비스 계정새 비공개 키 생성 → `resources` 폴더에 넣기 (`.gitignore`에 추가)코드의존성 추가implementation 'com.google.fireb..
프로젝트에서 애플 로그인을 맡아서 글을 이것저것 찾아보았다. 근데... 진짜 처음볼 때 무슨 말인지 하나도 못 알아들었었다. 소셜 로그인 자체가 처음이어서 감도 안 잡혔고 외계어 그 자체여서 머리속에서 계속 튕겨냈다. 다들 구현 방법이 조금씩 다르기도 해서 더 헷갈렸던 것 같다. 그래도 글을 계속 읽다보니 좀 이해가 되고 흐름도 알게되었다. 참조 쪽으로 가면, 내가 참고한 글들에서 어느 부분을 중심으로 보았는지를 적어놓았으니 좀 도움이 될 것이다! 흐름 위 사진의 흐름을 그대로 따라가면 된다. 내가 진행한 프로젝트에서는 프론트 쪽에서 `Authorization code`를 전달하기로 하여 해당 부분의 코드는 작성하지 않았다. 백엔드에서는 프론트에서 받은 `Authorization code`을 이용해 ..
계약 정의를 위한 인터페이스 사용자바에서 인터페이스는 특정 책임을 선언하는 데 사용하는 추상 구조이다. 인터페이스를 구현하는 객체는 이 책임을 정의해야 한다. 동일한 인터페이스를 구현하는 여러 객체는 해당 인터페이스가 선언한 책임을 다른 방식으로 정의할 수 있다. 인터페이스는 '무엇이 발생해야 하는지(필요 대상)'를 지정하는 반면, 인터페이스를 구현하는 모든 객체는 '어떻게 그것이 발생해야 하는지(발생 방법)'를 지정한다고 볼 수 있다. 구현 분리를 위해 인터페이스 사용우리는 목적지로 이동하려고 우버 같은 차량 공유 앱을 사용한다. 일반적으로 차량 공유 서비스를 사용할 때는 차량 외관이나 운전자가 누구인지 신경 쓰지 않으며 그저 목적지에 가기만 하면 된다. 차량 공유 앱은 인터페이스이다. 고객은 자동..