본문 바로가기

개발/Test4

[Test] Mockito를 사용해보자 (2) 이전 포스트에서 Mockito가 무엇이고 어떻게 사용하는지 기본적으로 알아보았다. 이번에는 Mockito에서 제공하는 BDD스타일을 정리한다. Mockito의 BDD스타일 이전 포스트에서 Mock객체를 만들어 Stubbing하는 방법을 알아보았다. Mockito에서는 BDD라는 스타일의 방식으로 Stubbing을 제공한다. BDD가 뭔데? BDD는 'Behavior Driven Develop'의 약자로 클래스의 행위에 대한 테스트를 진행한다는 의미이다. 테스트 케이스의 메서드명을 '~클래스는 ~행위를 해야한다'라는 식의 문장으로 작성하며 어떠한 시나리오를 기반하여 작성하는 개발 방법이라고 한다. (BDD에 대해 좀 더 공부하여 개별 포스팅을 하고 링크를 추가해야겠다.) 기본적인 Mock객체를 Stubbi.. 2022. 2. 10.
[Test] Mockito를 사용해보자 (1) Mockito 자바 코드를 테스트는 JUnit5 프레임워크를 통해 진행할 수 있다. 그럼 Mockito는 뭔가? 우선 Mock의 뜻은 모조품이다. 즉, Mockito는 가짜 객체를 만들 수 있도록 해준다. Mock이 필요한 이유 그럼 왜 가짜 객체가 필요한가? 예를 들어, 나는 B라는 객체의 run()메서드를 테스트 하고 싶다. 그런데 B 인스턴스를 생성하기 위해서는 A라는 인스턴스를 B의 생성자 매개변수로 넘겨주어야 한다. 즉, B가 A에 의존하고 있는 것을 알 수 있다. 만약, A가 또 다른 객체에 의존하고 있다면 B의 run()메서드를 테스트 하기 위해 많은 인스턴스를 생성해야 한다. 이렇게 강한 의존성을 끊기위해 가짜 객체를 생성하고 이를 Mockito를 통해 사용할 수 있다. 또, 구현체가 없는.. 2022. 2. 10.
[Test] JUnit5을 사용해보자 (2) JUnit5 이전에 JUnit5가 무엇인지, 기본적인 사용방법을 알아보았다. 이번 포스트는 대표적인 Assertion을 통해 테스트를 진행해볼 것이다. Assertion 테스트를 진행하기 위해선 여러가지 상황이 필요하다. 예를 들어 Account라는 객체의 age가 19미만인 경우 술과 담배를 판매하면 안되는 상황이라면 술과 담배 판매 메서드를 테스트할 때, age < 19의 경우는 판매가 되면 안되는 것을 테스트 하면된다. 위 예는 판매라는 메서드의 어떠한 경우이며, 판매가 아닌 또 다른 기능을 수행하는 메서드라면 해당 기능에 맞는 테스트를 진행해야 한다. 이를 위해 Assertion이 존재한다. Assertion의 메서드는 꽤 많이 정의되어있다. 따라서 자주 쓰이는 메서드를 위주로 정리하였다. 자주 .. 2022. 2. 10.
[Test] JUnit5을 사용해보자 (1) Test Environment IDE: IntelliJ Java version: 11 Test Framwork: JUnit 5 Gradle 테스트 코드의 필요성을 느끼게 되다. 사실 YAPP19th활동을 하지 않았으면 아직까지도 테스트 코드 작성의 필요성을 느끼지 못하였을 것이다. 그럼 왜 테스트 코드의 중요성을 느꼈나? 자바를 배우고, 스프링 프레임워크를 공부하면서 어플리케이션 로직을 최적으로 짜는 것이 중요하다고 생각했다. 당시에는 테스트 코드의 존재 또한 모르는 상태였다. 로직 작성을 끝마친 후에는 항상 "드디어! 깔끔하게 마무리 했다!" 이렇게 일이 끝났다고 생각을 했다. 하지만 테스트 코드의 존재를 알게된 후, 또 다른 일이 생겨버린 느낌이었다. 😮‍💨 그런데 YAPP 활동을 하며 프로젝트를 진.. 2022. 2. 10.