본문 바로가기

전체 글163

org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 오류 해결 여정 과제를 진행하며 테스트를 진행하던 중 다음과 같은 오류가 발생했다. org.gradle.api.internal.tasks.testing.TestSuiteExecutionException: Could not execute test class 'baseball.ApplicationTest'. at org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:54) at java.base@17.0.8.1/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at java.base@17.0.8.1/jdk.inte.. 2023. 10. 24.
[면접 질문 복기] 2023/10/10 면접 1. DI란 무엇인가 - 의존관계 주입이란, 의존관계에 필요한 것들을 객체 스스로가 정해서 가져가는 것이 아닌 외부에서 결정하고 주입하는 것. 2. DI 주입 시점은 컴파일 단계인가 아니면 런타임 단계인가 - 내 답변 : 컴파일 단계이다. 컴파일 단계에서 빈 생성시 필요한 객체들을 찾아서 주입해준다. - 정담 : 런타임 단계이다. 클래스 모델이나 코드에는 런타임 시점의 의존관계가 드러나 있지 않고 런타임 시점에 컨테이너나 팩토리 같은 제 3의 존재가 결정해준다. 진짜 멍청이...스프링의 기본중의 기본인데 이걸 틀렸다. 이건 긴장해서 틀렸다고 변명도 못한다. 3. DI의 장점은 무엇인가 - 객체간 결합도가 낮아진다. - 테스트가 쉬워진다. - 어째서 테스트가 쉬워지나? - 원하셨을 것 같은 답변 : DI가.. 2023. 10. 10.
[원티드 프리온보딩] 개발하면서 든 생각. 외래키가 꼭 필요한가 고민중인 것 1. 외래키는 분명 장점도 있지만 요즘 개발을 하면서 꽤나 불편하다고 느낀다. 특히 테스트를 작성하면서 불편함이 제일 큰 것 같다. 사실 외래키를 많이 없애는 추세라는 말을 듣기는 했지만 현업에서는 별 문제 없이 사용해왔고 또 익숙하니까 그냥 사용하고 있었는데 이제는 조금 생각해 볼 때가 된 것 같다. 2023. 10. 9.
[원티드 프리온보딩] 회사의 채용 공고 List 고민중인 것 1. 채용 상세 페이지를 조회시 해당 회사의 유효한(삭제되지 않은) 채용 공고 id 리스트를 가지고 오고 싶다. 복잡하게 할 것 없이 그냥 회사 id로 채용 공고 테이블을 조회해서 id만 뽑아 응답 객체에 넣어주려고 하는데 고민중인것은 회사 id를 따로 받을 것인지, 아니면 상세 조회에서 가지고 온 데이터에서 회사 id를 가지고 올 것인지 이 두 부분에서 약간 고민이 된다. 결론 1. PathVariable을 사용하는 것은 특정 리소스의 식별을 하기 위함인데 이는 해당 요구사항에는 어울리지 않는 것 같다. 그래서 우선은 조회해 온 채용 공고의 데이터에서 회사 id를 뽑아내 해당 id로 채용 공고를 조회하는 방법을 쓰기로 했다. 추가 고민 1. 그런데 PathVariable로 가져오면 쿼리 하.. 2023. 10. 8.
[원티드 프리온보딩] 검색 기능의 구현 고민중인 것 1. 검색 기능을 구현시 어떤 식으로 구현할 것인가 고민이다. 채용 공고를 키워드로 검색하여 해당하는 채용공고들을 보여줘야 하는데 현재 채용공고 테이블에는 4개의 컬림이 있고, 회사 테이블에는 3개의 컬럼이 있다. 간단하게 생각나는 방법으로는 단순하게 모든 컬럼에서 해당 키워드가 있는지 검색을 하는 것이다. (채용 포지션, 요구 스킬, 채용 보상금, 채용 내용, 회사명, 국가, 지역) 테이블에 데이터가 몇건 없다면 사실 큰 문제가 없으리라 생각하지만 데이터가 엄청나게 많다면 이는 분명 문제가 될 것이라고 생각한다. 그 다음으로 생각한 것이 채용 포지션, 요구 스킬, 채용 보상금, 채용 내용, 회사명, 국가, 지역 모두를 하나로 합쳐서 하나의 컬럼(예를 들면 키워드라는 이름의 컬럼)을 만들어 .. 2023. 10. 7.
[원티드 프리온보딩] Service와 ServiceImpl 고민중인것 1. 사실 지금까지는 개발팀 컨벤션에 맞춰서 Interface Service와 그를 구현하는 ServiceImpl을 따로 구현하는 식으로 개발을 해 왔다. 하지만 구현을 하면 할 수록 이게 올바른 방식일까 하는 생각이 많이 들었다. 이렇게 하는 이유에 대해서 물어보면 확장성등의 이야기들이 나온다. 어느정도 일리가 있다고 생각하지만 UserService는 이미 유저에 국한된 서비스를 제공할 것이고, CompanyService는 회사에 관련된 서비스를 제공할 것이다. 두 서비스가 가지는 공통적인 기능을 Interface Service로 뽑아서 이것을 구현한다면 모를까 굳이 Service와 ServiceImpl을 나눠야 하는 이유를 아직 잘 모르겠다. 2023. 10. 7.
[원티드 프리온보딩] 데이터 조회시 없는 경우 404를 내줄것인가 빈 JSON데이터를 내줄것인가. 고민중인것 1. 현재 등록되어있고 삭제되지 않은 모든 채용공고를 조회시 아무런 채용 공고가 없다면 예외를 발생시켜서 404 Not Found를 던져줄것인지, 아니면 그냥 빈 JSON 데이터를 내려줄것인지 생각 해봐야겠다. 2023. 10. 7.
item 4 간혹 정적 메서드만 담은 유틸리티 클래스처럼 인스턴스화가 필요없는 클래스가 발생 할 수도 있다. 이들의 인스턴스화를 막기 위해 다음과 같이 추상 클래스로 만들 수 있겠지만 public abstract class UtilityClass { } 이런 추상 클래스로는 인스턴스화를 막을 수 없다. 그 이유는 간단한데 만약 저 추상 클래스를 상속받는 하위 클래스가 있는 경우, 자동적으로 인스턴스가 만들어진다. 오히려 abstract 키워드 때문에 상속하여 사용하라는 듯한 오해를 불러 일으킬 수 있다. 이런 경우 private 생성자를 추가하여 인스턴스 생성을 막을 수 있다. public class UtilityClass { private UtilityClass() { throw new AssertionError(.. 2023. 10. 4.
개인 프로젝트 플랜잇 3일차 오늘 한 일 1. 스프링 시큐리티 적용하기 위한 설정 2023. 10. 2.
728x90