Test

setup dependency 추가 tasks.withType().configureEach { useJUnitPlatform() } // Test Framework testImplementation('io.kotest:kotest-runner-junit5:5.5.4') // Assertions Library testImplementation('io.kotest:kotest-assertions-core:5.5.4') Kotest intellij plugin 설치 Testing Style kotest는 10개의 레이아웃을 제공하며, 이 중 하나를 상속받아서 사용 가능 여러 테스트 프레임워크에서 영감을 받아 작성된 레이아웃도 존재 사용하면 편할 것 같은 레이아웃을 몇 개 살펴보면 Should Spec Beha..
개발 환경 ㄴ springBoot : 2.4.13 ㄴ spock : 1.2 ㄴ groovy : 2.4.1 ㄴ gradle : 3.7 PR을 올리면 CI 서버에서 자동으로 테스트 코드를 수행하게 되는데, 어느날 배포나간 테스트 코드를 IDE에서 실행해보니 깨지는 것을 발견했다. 애초에 테스트가 통과되지 않는 코드인 것인데 CI 서버에서는 어찌 통과를 했던 것일까? 한참을 삽질을 하던 나는 IDE 에서의 직접 테스트코드 실행이 아닌 그래들 래퍼로 test task를 실행하였을 때 재현이 되는 것을 발견했다. ./gradlew test 실행시 테스트코드가 실행되지 않고 SUCCESS가 되는 것...! $ ./gradlw test BUILD SUCCESSFUL in 10s 테스트할 클래스를 명시적으로 지정을 하..
Spock을 이용하여 MockBean을 생성하였는데, 정의한 행위대로 동작하지 않는 이슈를 발견했다. 간단히 작성해보자면 아래와 비스무리한 코드였다. @Autowired private SimpleMapper simpleMapper; ... @TestConfiguration def setup() { def factory = new DetachedMockFactory() @Bean SimpleMapper simpleMapper() { return factory.Mock(SimpleMapper) } } def "test"() { given: simpleService.selectSomething(_) >> "SUCCESS" expect: "SUCCESS" == simpleService.selectSomethin..
Junit 프레임워크에서 많이사용되는 모키토 프레임워크에 대해 알아보자. 차별점 테스트 그 자체에 집중한다. 테스트 스텁을 만드는 것과 검증을 분리시켰다. Mock 만드는 방법을 단일화했다. 테스트 스텁을 만들기 쉽다. API가 간단하다. 프레임워크가 지원해주지 않으면 안되는 코드를 최대한 배제했다. 실패 시에 발생하는 에러추적이 깔끔하다. 환경구성 org.mockito mockito-all 1.9.5 test 기본 사용법 Mockito는 Stub 작성과 Verify가 중심을 이루며 다음과 같은 순서로 진행된다. CreateMock : 인터페이스에 해당하는 Mock 객체를 만든다. Stub : 테스트에 필요한 Mock 객체의 동작을 지정한다.(필요시만) Exercise : 테스트 메소드 내에서 Mock객..
단위/통합 테스트 전용 스타터 폼 spring-boot-starter-test 만 있으면 손쉽게 테스트가 가능하다. (Junit, Hamcrest, Mockito 등이 존재) pom.xml 추가 org.springframework.boot spring-boot-starter-test test spring-test, junit, hamcrest, objenesis, mockito JAR 파일 의존성 스프링 부트 테스트 기본 기본 스프링 데이터 테스트 코드 import org.junit.Test; import org.junit.runner.RunWith; import org.springframework.boot.test.context.SpringBootTest; import org.springframewor..
테스트하기 mvn test test페이즈는 target/test-classes에 컴파일한 단위 테스트 클래스를 실행하고 그에 따른 결과물을 target/surefire-reports 디렉토리에 생성한다. (test-compile 페이즈에 의존 관계를 가진다.) 만약 테스트 스위트(TestSuite)별로 나누어서 테스트할 필요가 있다면 test 옵션을 사용한다. 다음과 같이 원하는 테스트 클래스를 지정할 수 있다. mvn -Dtest=원하는클래스 test mvn -Dtest=원하는클래스1,원하는클래스2 test 단위 테스트가 실패하여 빌드가 실패할 경우 (테스트케이스 관리가 안될 경우) 테스트를 스킵할 수 있다. mvn -Dmaven.test.skip=true test 매번 인자로 전달하기 싫다면 pom...
스프링이 개발자에게 제공하는 가장 중요한 가치는 객체지향과 테스트이다. 웹을 통한 DAO 테스트의 문제점DAO뿐만 아니라 서비스 클래스, 컨트롤러, JSP 뷰 등 모든 레이어의 기능을 만들고 나서야 테스트가 가능하다는 점이 가장 큰 문제였다.사실 테스트하고 싶었떤 건 UserDao 였는데 다른 계층의 코드와 컴포넌트, 심지어 서버의 설정 상태까지 모두 테스트에 영향을 줄 수 있기 때문에 이러한 방식으로 테스트하는 것은 번거롭고, 오류가 있을 때 빠르고 정확하게 대응하기가 힘들다는 문제가 있다. 테스트하고자 하는 대상이 명확하다면 그 대상에만 집중해서 테스트하는 것이 바람직하다.(단위 테스트)=> 안하게되면 이유를 찾기위해서 디버거를 돌려가며 스텝별로 확인해야하는 수고를 하게될지도 모른다. 테스트를 위한 ..
깡냉쓰
'Test' 태그의 글 목록