728x90
반응형
2.1 main() 메소드를 활용한 테스트의 문제점, 2.2 Junit을 활용해 main() 메소드 문제점 극복을 정리해보았습니다.
학습 목표
- 문제점과 해결방식에 초점을 맞추어 정리했습니다.
- 문제점이 무엇인지 아는 상태에 도달하기 위해 노력했습니다.
1. 프로덕션 코드와 테스트코드(main()) 이 같은 클래스에 위치하고 있다.
public class Calculator{
...
}
public static void main(String[] args){
Calculator cal = new Calculator();
cal.add(1,2);
cal.sub(1,2);
}
- 프로덕션 코드와 테스트 코드를 분리하자
public class Calculator{
...
}
분리!
public static void main(String[] args){
Calculator cal = new Calculator();
cal.add(1,2);
cal.sub(1,2);
}
2. main() 메소드 하나에서 프로덕션 코드의 여러메소드들을 동시에 테스트하고 있다.
public static void main(String[] args){
Calculator cal = new Calculator();
cal.add(1,2);
cal.sub(1,2);
}
- 테스트 코드를 각 메소드별로 분리하자.
public static void main(String[] args){
Calculator cal = new Calculator();
methodAdd(cal);
methodSub(cal);
}
public void methodAdd(Calculator cal){
cal.add(1,2);
}
public void methodSub(Calculator cal){
cal.sub(1,2);
}
3. 클래스가 가지고 있는 모든 메소드에 관심있는게 아니라 현재 내가 구현하고 있는 메소드에만 집중하고 싶다.
- 테스트하는 메소드만 남기고 다른 메소드를 주석처리하는 것도 좀 이상하다.
- 테스트 결과는 할때마다 내가 콘솔로 직접 봐야한다.. 이것도 좀 불편합니다.
해결하기
- 결과값을 눈이 아닌 프로그램을 통해 자동화하면 된다.
- Junit을 이용하여 테스트를 진행하자.
- 테스트하는 메소드만 남기고 다른 메소드를 주석처리하는 것도 좀 이상하다.
- 다른 메소드의 영향 없이 내가 현재 구현하고있는 프로덕션 코드에 집중 가능하다.
- 테스트 결과는 할때마다 내가 콘솔로 직접 봐야한다.. 이것도 좀 불편합니다.
- assertEquals(), assertTrue() 등으로 결과확인을 눈으로 확인하지 않아도 된다.
public class CalculatorTest{
@Test
public void add(){
Calculator cal = new Calculator();
assertEquals(3,cal.add(1,2));
}
}
4. 중복 코드를 제거하고 싶다.
- @BeforeEach, @AfterEach 를 적극 활용하자.
public class CalculatorTest{
private Calculator cal;
@Before
public void setUp(){
cal = new Calculator();
}
@Test
public void add(){
assertEquals(3,cal.add(1,2));
}
@Test
public void sub(){
assertEquals(3,cal.sub(4,1));
}
}
728x90
반응형
'Dev' 카테고리의 다른 글
[WEB] 로그인 클라이언트 IP 를 정확하게 알기 (XFF) (0) | 2023.09.01 |
---|---|
[Next Step] 자바 웹프로그래밍 2.3 정리 (0) | 2022.08.24 |
Restful 하다는 것은 뭘까? (0) | 2022.07.18 |
[Spring] 의존성 주입(DI)에 대해 알아보자 - 3 / 의존성 주입 (0) | 2022.03.03 |
[Spring] 의존성 주입(DI) 에 대해 알아보자 - 2 / Bean 설정 (0) | 2022.03.02 |