테스트

    Junit5 의존성 주입 에러@Autowired ParameterResolutionException 과 해결방법

    Junit5 의존성 주입 에러@Autowired ParameterResolutionException 과 해결방법 보통 Spring을 사용하면 의존성 주입을 생성자 주입을 사용하여 받게 된다. 그래서 JUnit 테스트 에서도 @RequiredArgsConstructor 를 이용한 생성자 주입이 가능할 것 같지만 그렇지 않다. 만약 다음과 같이 생성자 주입을 받으려고 하면 다음과 같은 에러를 만난다 @RequiredArgsConstructor @SpringBootTest class ConstructorDiTest { private final MemberRepository memberRepository; private final MemberService memberService; ... } org.junit...

    Junit5 AssertJ List 정렬 테스트 ( Check if list is sorted in junit)

    Junit5 AssertJ List 정렬 테스트 ( Check if list is sorted in junit) JUnit5 에서 assertJ의 Assertions를 이용하여 List가 정렬되었는지 테스트 할 수 있다. isSorted() 메서드 isSortedAccordingTo(Comparator comparator) 메서드 docs : https://assertj.github.io/doc/ https://www.baeldung.com/introduction-to-assertj https://javadoc.io/doc/org.assertj/assertj-core/latest/org/assertj/core/api/ListAssert.html https://javadoc.io/doc/org.assert..

    RefectionTestUtils - private 필드 값 주입, private 테스트

    * https://docs.spring.io/spring-framework/docs/current/javadocapi/org/springframework/test/util/ReflectionTestUtils.html ReflectionTestUtils 클래스는 Spring Test Context 프레임워크의 일부이다. 단위 및 통합 테스트에서 사용되는 리플렉션 기반 유틸리티 메서드들을 모은 클래스이며, private field 를 설정하고 private field 호출하고 을 dependencies을 주입할 수 있다. 일반적인 비즈니스 애플리케이션을 개발한다면 사실 프로덕션 코드에서 리플렉션을 사용할 경우는 거의 없다. 라이브러리나 프레임워크 등을 개발할 때 주로 사용될 수 있다. 하지만 테스트 코드에서..

    Java Mockito Void method 테스트

    Mockito Void Method 테스트 방법 Mockito 프레임워크에서 사용되는 Mockito Verify , Mockito When/Then 및 Mockito의 Mock Methods )와 함께 사용한다. Test 코드를 작성하다가, Mocking을 하고 Mocking한 method가 void 일때 Mocking이 안되는 경우를 보았을것이다. Mockito를 사용해서 Void 메소드를 실행, 또는 exception을 Throw 할 수 있다. 일반적으로 mocking하는 것과 크게 다르지 않다. how? Mockito.doNothing() 모킹할 클래스 클래스 = mock(모킹할 클래스.class); Mockito.doNothing() .when(모킹할 클래스) .사용할메소드(매개변수) // 매개변..

    Java Static Method Mocking Test - 자바 스태틱 메소드 테스트

    JUnit5 Static Method 테스트 방법 - Mocking 먼저 방법부터 보고싶다면 여기로 이동하자. Mocking하는 방법은 다음과 같다. API 문서 java 에서 static 이란 static :정적인, 움직임이 없는, 고정된 자바나 여러 언어에서는 static 이라는 키워드가 존재한다. 주로 사용하는 의미는 정적인, 미리 선언하여 공유된 메모리의 영역을 사용할 때 사용하는 키워드 쯤으로 말할 수 있다. block : {} variable method class static 을 사용하는 이유는 바로 Shared Resource, 즉 공유를 위해서 사용한다. static 으로 선언한 코드는 JVM 메모리영역에 static 영역에 올라가게 되는데, JVM 상 동적 메모리 할당의 heap 영역이..

    Hamcrest (In Java JUnit5)

    Hamcrest - wikipedia Hamcrest 는 Java 프로그래밍 언어로 소프트웨어 테스트 작성을 지원하는 프레임워크입니다. 사용자 지정 Assertion Matcher('Hamcrest'는 '매처'의 아나그램 ) 생성을 지원하여 일치 규칙을 선언적 으로 정의할 수 있습니다 . [1] 이러한 매처는 JUnit 및 jMock 과 같은 단위 테스트 프레임워크에서 사용됩니다. 공식문서 공식문서 - Java 공식문서 - javadoc assert : 검증, 단언하다. 즉 테스트할 때 검증(assert). 실행한 코드가 설계한대로 정확하게 동작했는지를 검증한다. 검증부는 하드코딩 하는게 좋다고 한다? - 향로님(jojoldu) 간결한 코드로 객체의 상태를 테스트할 수 있다. 또한, 테스트가 실패되었을 ..

    무엇을 테스트 할것인가? 어떻게 테스트 할것인가 - 권용근님

    스프링캠프 2019 무엇을 테스트할 것인가? 어떻게 테스트할 것인가? (권용근 님) 좋은 테스트와 테스트 하는 방법에 대하여 고민하던 중, 좋은 영상 자료를 받게 되어 내용을 적으면서 공부한 내용입니다. 영상링크 우리가 테스트를 어려워하고, 결국 포기하는 이유는 잘못된 테스트를 작성했을 가능성이 크다고 생각합니다. 그래서 스프링 프레임워크를 사용하면서 우리는 무엇을 테스트해야 하는지, 어떻게 테스트할 것인지를 이야기해보려고 합니다. TDD 보다는 테스트에 대하여 이야기하는 세션입니다. 목차 테스트로 얻을 수 있는것 무엇을 테스트할 것인가? 어떻게 테스트할 것인가? TIP & RULE 1. 테스트로 얻을 수 있는것 마음의 안정성 -> 안정감과 자신감 -> 소프트웨어의 안정감과 자신감 안정감과 자신감을 얻어..

    Spring Boot JPA Test @DataJpaTest 기본 설정

    Spring Boot JPA Test @DataJpaTest 기본 설정 jpa관련 테스트(Entity, Repository)를 할때 @DataJpaTest를 이용해서 진행하면 JPA관련 Bean과 @Transactional 어노테이션이 달려있어서 테스트가 끝나면 Configuration만 주입받아서 빠르게 테스트를 진행할 수 있다. @Transactional 어노테이션이 달려있어서 테스트가 끝나면 롤백도 되어서 간단하게 결과를 확인할 수 있는 장점이 있다. MySQL, MSSQL, Oracle 처럼 다른 DB를 연동해서 사용할 수도 있지만, 이 글에서는 in-memory DB인 H2를 연동해서 테스트 하는 방법을 정리하고자 한다. 환경 SpringBoot : 2.7.3 Java : JDK11 MacOS ..

    JUnit5 - Java에서의 단위테스트5 Mock, Mockito, Stup

    Mock 객체 Stubbing stub이란 토막,꽁초,남은부분,몽당연필.. 이라는 뜻으로 dummy객체가 마치 실제로 동작하는 것 처럼 보이도록 만들어놓은 것 즉 Mock 객체의 행동을 조작하는 것 모든 Mock 객체의 행동 Null을 리턴한다. (Optional 타입은 Optional.empty 리턴. 즉 비어있는 옵셔널 객체) Primitive 타입은 기본 Primitive 값. 콜렉션은 비어있는 콜렉션. Void 메소드는 예외를 던지지 않고 아무런 일도 발생하지 않는다. 예제1 memberService.findById(1L) member 객체를 나오게 할라면 다음과 같이 쓰면 된다. 만약 2L, 3L 등 다른 member 객체를 나오게 한다면 오류가 난다. 1L로만 member를 나오게 했기 때문 ..

    JUnit5 - Java에서의 단위테스트4 Mock, Mockito

    Mockito란? Mockito는 개발자가 동작을 직접 제어할 수 있는 가짜(Mock) 객체를 지원하는 테스트 프레임워크. Mock: 진짜 객체와 비슷하게 동작하지만 그동작을 직접 그 객체의 행동을 관리하는 객체. Mockito: Mock 객체를 쉽게 만들고 관리하고 검증할 수 있는 방법을 제공한다. 테스트를 작성하는 자바 개발자 50%+ 사용하는 Mock 프레임워크. 단위 테스트에 고찰 참조 : https://martinfowler.com/bliki/UnitTest.html Mock Object를 만들어 주입시켜주는 방법을 지원해주는 라이브러리이다. Mockito는 과거에는 static메서드를 지원하지 않는 단점이 있어 PowerMock을 대안으로 사용했으나 Mockito 3.4.0부터는 static ..