Java 관련: 153개의 글
화면을 수정했는데, 클라이언트의 브라우져에 캐시가 남아서 이전 화면이 나오는 경우가 있다. 직접 브라우져 설정 들어가서 캐시를 지워달라고 요청 할 수도 있지만, 그게 한두번이 아니게 되니 코드에서 캐시를 지울수 없는지 찾아보았다. 이럴수가... 크게 어렵지도 않지만, html한정으로 이게 꼭 필요한 화면이 아니면 아래 설정은 가급적 안 하는게 좋을 것 같다. HTML 메타태그 이용하기 JSP, Java 사용시 자바 코드 지만 html과 같음. response.setHeader( "Pragma", "no-cache" ); response.setDateHeader( "Expires", -1 ); response.setHeader( "Cache-Control", "no-cache" ); JS, CSS 파일 캐..
jstl 내장함수 JSTL functions은 JSTL에서 제공하는 각종 함수를 사용해서 문자열이나, 컬렉션들을 처리함. fn태그는 단독으로 사용할 수 없고 EL 표현식 내에서 사용해야함. like ${fn:length(...)} jsp 페이지 시작점에 다음 태그로 선언 해줘야 사용 할 수 있음. boolean contains(String sting, String substring) string이 substring을 포함하면 return true. boolean containsIgnoreCase(String string, String substring) 대소문자에 관계없이, string이 substring을 포함하면 return true. ${fn:contains("helloworld", "world")..
[JSP, JSTL] fn function 정리 jstl function (jstl fn) 정리 jsp 파일 최 생단에 다음과 같이 jstl functions를 사용하겠다고 선언 해야 함. 함수들은 단독으로 사용할 수 없고 EL 표현식과 함께 사용해야 함. ${fn:length(list)} ${fn:contains(str, str)} fn:contains(string, substr) string이 substr을 포함하면 return true fn:containsIgnoreCase(string, substr) 대소문자 관계없이 string이 substr을 포함하면 return true fn:startsWith(string, prefix) string이 prefix로 시작하면 return True fn:en..
[JSP, JSTL] forEach 잘 사용하기 Spring 개발을 하다 보면 jstl 의 forEach 를 많이 사용하게 된다. 간단하지만 varStatus 속성 사용을 잘 하면 보다 편하게 개발할 수 있는것 같아서 남겨본다. current (현재 객체) : ${i.current} index (0부터의 순서) : ${i.index} count (1부터의 순서) : ${i.count} first (루프의 처음인가) : ${i.first} last (루프의 마지막인가) : ${i.last} begin (루프의 시작값) : ${i.begin} end (끝값) : ${i.end} step (증가값) : ${i.step} 출처 : https://jeaha.dev/70
다음은 일반적으로 인기있는 7가지 Unit Test 명명 규칙이다. 1. MethodName_StateUnderTest_ExpectedBehavior 예제: isAdult_AgeLessThan18_False withdrawMoney_InvalidAccount_ExceptionThrown admitStudent_MissingMandatoryFields_FailToAdmit 2. MethodName_ExpectedBehavior_StateUndertest 예제: isAdult_False_AgeLessThan18 withdrawMoney_ExceptionThrown_InvalidAccount admitStudent_FailToAdmit_MissingMandatoryFields 3. test[Feature be..
단위 테스트 JPAQueryFactory에 대해 mocking하기 ● 단위테스트할 함수 @Service @RequiredArgsConstructor @Transactional public class QueryFactoryTestService { private final JPAQueryFactory queryFactory; public boolean queryFactoryTest(int companyId) { return getFetchFirstCompany(companyId) != null; } private Company getFetchFirstCompany(int companyId) { return queryFactory .select(company) .from(company) .innerJoin(a..
● Mockito로 테스트코드를 작성하는 이유 @SpringBootTest 로 테스트코드를 작성하다보며 시간이 지날수록 프로젝트의 덩치가 커지면서 테스트코드를 실행하는데 굉장히 많은 시간이 걸리며 빌드시에도 많은 시간이 소요된다. 따라서 단위 테스트단위로 코드 작성시에는 mockito를 이용하여 테스트코드를 짜는것이 유용하다고 판단된다. @RunWith(MockitoJUnitRunner.class) @ExtendWith(MockitoExtension.class) 모두 Mockito의 Mock 객체를 사용하기 위한 Annotation이다 @RunWith는 junit4 @ExtendWith 는 junit5 사용시 정의하면 된다. ● Mockito를 이용한 예제 import java.util.Optional;..
● @SpringBootTest 및 test Slices(Auto-configuration Annotations) @SpringBootTest는 Spring Main Application(@SpringBootApplication)을 실행할때와 동일한 모든 Bean을 스캔하여 mock bean을 생성합니다. 통합테스트 슬라이스테스트(단위테스트) 어노테이션 @SpringBootTest @DataCassandraTest @DataJdbcTest @DataJpaTest @DataLdapTest @DataMongoTest @DataNeo4jTest @DataR2dbcTest @DataRedisTest @JdbcTest @JooqTest @JsonTest @RestClientTest @WebFluxTest @Web..
개요 테스트코드의 중요성은 해당 블로그를 읽는 분이라면 모두 알고 있을 것이다. 나도 잘 알고 있지만, 정확한 사용법을 몰라 매번 @SpringBootTest 통합테스트로만 테스트코드를 작성하였다. 이렇게만 작성하면, 테스트코드 속도가 느려지면서 테스트 코드를 사용하지 않게 될 것이다. 그렇기 때문에 상황에 맞는 최소한의 사이즈로 테스트를 하는게 좋다고 생각한다. 해당 포스팅에서 테스트 코드 작성법과 JUnit5에 추가된 내용들을 정리해보려한다! ( 테스트코드 작성방법은 뭔가 매번 까먹었다... ) 1. 통합 테스트 - @SpringBootTest 모든 빈을 등록하여 테스트를 진행한다. 그렇기 때문에 애플리케이션 규모가 크면 테스트가 많이 느려진다. ( 현업에서 테스트 코드를 돌려보셨다면 공감할거에요ㅠㅠ..
메이븐에서 실행가능한 Jar생성을 위한 설정 org.apache.maven.plugins maven-assembly-plugin true was.main.main jar-with-dependencies make-assembly package single 참고 http://stackoverflow.com/questions/574594/how-can-i-create-an-executable-jar-with-dependencies-using-maven 출처: https://happygrammer.tistory.com/20?category=869806 [happygrammer]