JUnit5 Assertion 기본 메소드 종류 1. assertTrue, assertFalse (boolean condition, String message) - argument로 특정 조건 및 boolean 값을 넘기고 assertTrue인 경우 false일때, assertFalse인경우 true일때, junit 에러를 발생시키며 message를 메시지로 리턴한다. 2. assertNotNull, assertNull (Object object, String message) - argument로 객체를 넘기면 객체가 null 일경우와 not null 일 경우 예외 메시지로 message를 리턴하게 된다. 위의 두가지 메소드와 엇비슷한 용도로 사용된다. * 위의 메소드처럼 assertXXX로 시작하는 메..
update, insert 쿼리보통 update, insert 를 하는 경우 mapper xml 파일에 다음과 같이 적곤 한다. INSERT INTO TABLE_A (column1, column2, column3) VALUES (#{param1}, #{param2}, #{param3}); UPDATE TABLE_A SET column2 = #{param} WHERE seq = #{seq}; 거의 대부분은 이런식일 것이다. 이렇게 seq가 정해지고 딱딱 들어간다면 얼마나 좋을까..하지만 실무에서는 특정 where 절에 대하여 조건을 가진 행만이 update되고 이는 사전에 어떤 seq를 가지는 row가 update 처리가 될지 미리 예측하기는 같은 조건으로 select를 해보기 전에는 모르는게 일반적이다...
안녕하세요. 오늘은 JUnit 5버전에 대해서 포스팅하고자 합니다. 현재 스프링부트 버전이 2.3버전이 나온걸로 알고 있습니다. 기본적으로 스프링 부트 프로젝트를 생성하니 2.3이라고 적혀있더라구요. 그런데 스프링부트 2.2버전부터 스프링 테스트 도구로 JUnit 5 버전을 채택했다고 합니다. 따라서 2.2 이후 프로젝트에서는 JUnit 5버전을 사용하실 수 있게 됬다고 합니다. 스프링부트 2.3 버전도 이미 나왔고, 2.2 버전에서 채택된 JUnit5 버전을 사용하지 않을 이유가 없다고 생각해서 JUnit5 버전을 채택했습니다. JUnit 5버전은 패키지명에 jupiter가 들어가니 확인해주시기 바랍니다. 저는 Spring Initailzr를 통해 스프링부트 프로젝트를 만들었습니다. 프로젝트를 생성하는..
안녕하세요. 오늘은 간간히 사용하는데 편리함을 느끼는 JetBrains 사의 ToolBox 소프트웨어 어플리케이션을 소개하고자 합니다. 저는 평소에 회사에서나 개인적으로 IntelliJ IDE Ultimate 버전을 사용합니다. 학생 계정을 가지고 있어서 1년동안 무료로 사용 가능한데요. 그 덕분에 다양한 JetBrains 사의 IDE를 접해볼 기회가 있었습니다. 대표적으로 WebStorm과 PyCharm, Datagrip 등이 있었는데요. 이클립스를 쓰던 시절과 비교해서 Toolbox라는 앱이 있어서 가끔 업데이트 할때나 프로젝트 관리를 할때 편하다고 느꼈습니다. 그 이유는 아래에서 보여드리도록 하겠습니다. https://www.jetbrains.com/ko-kr/toolbox-app/ JetBrain..
안녕하세요. 최근에 백기선님의 유튜브를 자주 보곤합니다. 그 중에서는 더 나은 개발자로 성장하는 팁이라는 주제로 사연을 소개하면서 스토리텔링을 해주시는걸 자주 듣곤 하는데요. 그 팁중 하나로 테스트코드를 잘 작성하는 연습을 하는 개발자가 좋다는 이야기를 넌지시 들었어요. https://www.youtube.com/watch?v=s_Zdl28NEM4&t=131s 저는 테스트 코드를 주로 JUnit을 사용하고 있고, 개인적으로나 회사업무에서나 JUnit을 사용하여 테스트 코드를 짜면서 개발을 하고 있죠. 그래서 나름 내가 좋은 방향으로 가고 있구나 안심을 하면서 영상도 즐기면서 시청했었습니다. 그러던 중 댓글에서 "테스트코드가 뭐죠? 어떻게 짜는거죠?" 라는 댓글이 하나가 보이더라구요. 불과 몇달전까지만해도..
스프링은 자체적으로 프록시 패턴을 통해 비즈니스 로직과 공통 코드를 분리하는 AOP를 제공하고 있습니다. 관점지향 프로그래밍이라는 개념아래 서비스를 호출할 때 AOP의 경우 프록시 역할을 하는 객체에 의해 서비스가 호출되게 됩니다. 특정 클래스, 메소드, 어노테이션 등을 타겟으로 삼아 AOP에 쌓여진 코드는 직접 호출이 아닌 대리기사인 프록시 객체에 의해서 호출되게 되는데... 그 과정을 코드로 살펴보겠습니다. 프로젝트 구성 - AService, BService는 비즈니스 코드 역할을 할 서비스 클래스입니다. 실제 실무에서는 interface를 구현하고 있는 형태가 대부분일 것입니다. - TestAnnotation은 커스텀으로 어노테이션을 만든 것입니다. 커스텀 어노테이션을 구현하는 방법은 다음의 내용을..
안녕하세요. 오늘은 개발자 면접에 대한 저의 생각과 면접에 대한 자세? 혹은 포부? 정도를 생각하며 공유하고자 합니다. 개발자 구인 일반적으로 개발자들은 실무위주의 아주 실용적인 기술을 가진 사람들이라고 생각하고 있습니다. 언제든지 프로그래밍을 통해서 일반고객, 기업고객, 외주고객 등 고객의 요구에 반영한 어플리케이션 서비스를 제공할 수 있는 사람들이기 때문입니다. 그러기 위해서는 혼자만의 힘으로는 모든 요구사항을 커버하기 힘들어지고 점차 영역이 커져가게 됩니다. 이 때, 자신의 일을 나눌 동료가 필요하게 됩니다. 제가 사장이자 개발자로써 업무를 하다가 동료를 구인하게 될 때, 이 사람이 정말 나와 비슷한 정도의 일을 나눌 수 있을 만한 사람인지 판단을 해야 할 것입니다. 그럴 때 필요한 것이 바로 면접..
코틀린 스프링부트, 컨트롤러 생성 후 페이지 접속해보기 - TestController.kt 생성 - pom.xml에 mustache 디펜던시 추가. 1. 현재 프로젝트 구조 - main/resources/templates 디렉토리 아래애 footer, header, index 머스터치 파일 생성 pom.xml org.springframework.boot spring-boot-starter-mustache Mustache 디펜던시 추가. -> mvn clean -> mvn install TestController.kt package com.example.demokotlin.test import org.springframework.stereotype.Controller import org.springfram..