일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 |
- datastructure
- IAC
- Algorithm
- ansible
- 자료형
- Class
- MergeSort
- lambda
- For
- g1gc
- datatype
- Fluent-bit
- UserDetails
- If
- Spring Security
- redis
- 기초
- While
- JPA
- Java
- Sprint Security
- C++
- JavaScript
- zgc
- programmers
- Kotlin
- SpringBoot Initializr
- jvm
- 연산자
- quicksort
- Today
- Total
목록Java (29)
뭐라도 끄적이는 BLOG
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/bwVWp7/btrndGkCw63/kiI5sKjuIH6vm4toS7aIEk/img.png)
Mock객체 만들기 MemberService와 StudyRepository를 이용해서 StudyRepository를 생성해야 하는것을 가정으로 하겠습니다. Mockito.mock()메소드로 만드는 방법 @Test void createStudyServiceForMockMethod() { MemberService memberService = mock(MemberService.class); StudyRepository repository = mock(StudyRepository.class); StudyService studyService = new StudyService(memberService, repository); assertNotNull(studyService); } @Mock Annotaiton @E..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/nMHrL/btrm1jkcqSL/ejm1ywxnPqAre1FVC9QkT1/img.png)
Mockito는 Mock을 지원하는 툴입니다. 여기서 Mock은 진짜 객체와 비슷하게 동작하지만 프로그래머가 직접 그 객체의 행동을 관리하는 객체입니다. Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공하는 것이 Mockito입니다. 대체제로 EasyMock, JMock등이 있습니다. JUnit만으로는 Database를 사용한다던지 외부의 API를 사용한다고 했을때 외부 API가 어떻게 동작해야하는지 항상 테스트해보면서 사용할 수 없습니다. 그렇기 때문에 어떻게 동작해야하는 예측을 해서 Mock을 만든뒤 사용하게 됩니다. 그리고 어느정도 규약이 정해졌으나 그 서비스가 아직 구현이 안됬음에도 해당 서비스를 이용하는 다른 서비스를 구현해야 할 때 Mock을 사용할 수 있습니다. Unit te..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/VLIuj/btrmXnUVIjE/cvWDAjPj6Jmj3gaMd1lWF0/img.png)
테스트를 진행하다보면 특정 조건에 맞도록 테스트하는 과정도 필요합니다. 환경변수에 따라 실행되어야 하는 테스트가 있을 수 있고 properties에 설정된 값에 맞도록 실행되어야 하는 테스트 그리고 OS나 JRE 버전에따라 진행되어야 하는 테스트가 모두 따로 있을 수 있습니다. 이러한 조건에 맞도록 테스트 하는 방법을 살펴보도록 하겠습니다. Assumptions Assumptions는 특정한 조건에 따라 테스를 실행하고자 할때 사용하는 클래스입니다. 조건을 설정하는 여러메소드중 주요한 몇가지만 살펴보도록 하겠습니다. assumeTrue 조건이 참이면 아래 테스트가 진행됩니다. @Value("${test.env}") private String testEnv; @Test @DisplayName("test.e..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/cZxyzE/btrmSxCiVVo/v3IGXzSGQHQUjxkW2v63ck/img.png)
Assertions은 우리가 실제 테스트에서 검증하고자 하는 내용을 확인하는 메소드들을 모아놓은 클래스 입니다. 주로 import static으로 가지고와 메소드 들을 사용하게 됩니다. assertEqulas(expected, actual) 실제 값이 기대한 값과 같은지 확인 assertNotNull(actual) 값이 null이 아닌지 확인 assertTrue(boolean) 조건이 참(true)인지 확인 assertAll(executables...) 모든 확은 구문 확인 assertThrows(expectedType, executable) 예외 발생 확인 assertTimeout(duration, executable) 특정 시간 안에 실행이 완료되는지 확인 이모든 메소드들은 Supplier messa..
![](http://i1.daumcdn.net/thumb/C150x150.fwebp.q85/?fname=https://blog.kakaocdn.net/dn/N9nlJ/btrmSxa0CyX/xRAX5RqQAABDEQzavCujN0/img.png)
JUnit은 Java개발자가 가장 많이 사용하는 테스팅 프레임워크입니다. The State of Developer Ecosystem in 2021 Infographic The State of Developer Ecosystem 2021 is a detailed report about the programming community, which covers the latest trends in languages, tools, technologies, and lifestyles of developers. www.jetbrains.com JUnit5는 Springboot 2.2이후부터 기본 JUnit 버전을 5로 제공하게 되었습니다. 그리고 Java 8 이상을 필요로 합니다. 이 외에 TestNG, Spock등..
일대일 일대일 관계는 주 테이블이나 대상 테이블 중에 어떤 테이블이던지 외래 키를 가질수 있습니다. 어느 테이블에 외래 키가 들어갈지 선택했다면 해당 외래 키에 데이터베이스 유니크(UNI)제약조건 추가되어야 일대일관계가 됩니다.(굳이 넣지 않아도 되지만 넣지않으면 애플리케이션에서 관리를 아주 잘해야합니다.) 단방향 회원이 사물함을 단 하나 가지고 있다고 생각하겠습니다. 이경우 MEMBER 테이블에 LOCKER_ID를 UNI로 넣어도 되고 반대로 LOCKER테이블에 MEMBER_ID를 UNI로 넣어도 됩니다. 어느경우든 일대일 연관관계가 됩니다. 위 예시는 MEMBER테이블에 LOCKER_ID를 넣고 연관관계를 매핑하 였습니다. MEMBER가 주 테이블이 되고 LOCKER는 대상 테이블이 됩니다. 모양만 ..
연관관계 매핑시 고려사항 3가지 다중성 단방향 양방향 연관관계의 주인 다중성 다대일 (@ManyToOne) 일대다 (@OneToMany) 일대일 (@OneToOne) 다대다 (@ManyToMany) JPA 어노테이션은 DB와 매핑하기 위해 있습니다. 그래서 데이터베이스의 관점으로 기준을 고민하면 됩니다. 다중성을 판단하기 어려울 때는 반대방향에선 어떤 다중성을 가지는지 생각해 보면 됩니다. 대부분 다대일을 많이 사용하게 되며 일대다 일대일이 나오기도 합니다. 하지만 다대다는 정말 나오면 안되는 다중성입니다. 가능한 다른 방법으로 대체해 주는것이 좋습니다. 이번단원은 이전단원에서 이미 다루었던 내용이 나옵니다. 이전장에서 사용했던 연관관계를 정리하는 단원이라고 생각하면 됩니다. 다대일 데이터베이스 테이블의..
양방향 연관관계 이제 팀에서도 회원으로 접근할 수 있도록 양방향 연관관계로 매핑해 보겠습니다. 먼저 객체 연관관계를 살펴보겠습니다. 회원과 팀은 다대일 관계이며 반대로 팀에서 회원은 일대다 관계인 것을 볼 수 있습니다. 일대다 관계는 여러 건과 연관관계를 맺을 수 있으므로 컬렉션을 사용해야 합니다. 그러므로 Team.members를 List 컬렉션으로 추가하였습니다. 데이터베이스 테이블은 이전과 같이 외래 키 하나로 양방향으로 조회할 수 있으므로 추가할 내용은 전혀 없습니다. 양방향 연관관계 매핑 @Entity @Getter @Setter public class Member { @Id @GeneratedValue(strategy = GenerationType.IDENTITY) @Column(name = ..
객체가 지향하는 패러다임과 관계형 DB가 지향하는 패러다임이 다르기 때문에 연관관계를 맺는데 어려움이 있습니다. 예를 들어 Member와 Team이 있다면 객체는 Member.getTeam()으로 Team객체를 찾아올 수 있어야 합니다. 하지만 테이블은 이러한 연관관계를 외래키 값을 이용합니다. 이번 연관관계 매핑에서는 이러한 객체와 테이블의 차이를 이해하고 객체의 참조와 테이블의 외래키를 매핑하는 것이 목표입니다. 시작하기 앞서 몇가지 용어를 먼저 알아보고 가겠습니다. 방향(Direction) : [ 단방향, 양방향 ] 한쪽만 참조하는 것을 단방향, 양쪽 모두 서로 참조하는 것을 양방향이라고 합니다. 다중성(Multiplicity) : [ N : 1, 1 : N, 1 : 1, N : N ] 관계형 DB..