본문 바로가기

기존카테고리/JUnit

JUnit 개념정리 및 실습1

 [ 단위테스트 JUnit ]

 

 * JUnit은 자바용 단위 테스트 작성을 위한 산업 표준 프레임워크다.

 

   1. 단위테스트란 무엇인가?

    테스트의 대상이 되는 코드 중에서 아주 작은 특정 영역을 실행해 보는 개발자가 작성한 

    코드 조각이다.

   

   2 .어떤 것을 테스트 해야 하는 가?

    - 자신이 생각한 대로 코드가 동작하는지 검증하고자 할때

    - 디스크가 꽉차있고, 네트워크가 단절되어있고, 버퍼 오버플로우가 되는 예외 상황에서도

      코드가 동작되는지 알아보고자 할때

    - 실제 DB 접속이 되지 않은 상태에서 설정이 제대로 되어 있는지 확인하고자 할때...

    

   [JUnit(단위테스트)]

     - 단위코드에서 문제 발생 소지가 있는 모든 부분을 테스트 하는 작업

     - 보통 클래스의 public method를 테스트한다.

     - 좋은 단위 테스트란 모든 메서드를 테스트하는 것이 아니라, 상식 수준의 확인을 통해 의도대로 동작

         하는 지를 여부를 판단하는 테스트

          

     * JUnit 4 라이브러리 추가(스프링에서는 JUnit 라이브러리 추가되어 있음)  

       

         



일반적인 테스트

: 아래 double res3 에서 에러가 발생한다. -0.89999...  이런 식으로 에러 발생.


package jUnitTest;


public class JunitEx01 {

public static class Calculator{

public double sum(double n1, double n2){

return n1+ n2;

}

}

public static void main(String [] args){

Calculator c = new Calculator();

double res = c.sum(10, 20);

if(res != 30){

System.err.println("err :"+ res);

}

double res2 = c.sum(1.1, 2);

if(res2 !=3.1){

System.err.println("err :"+res2);

}

double res3 = c.sum(1.1, -2);

if(res3 !=-0.9){

System.err.println("err :"+res3);

}

}

}




JUnit 단위테스트:

@Test 어노테이션을 쓴다.

@Test 어노테이션이 선언된 메소드는 - static이 들어가면 안된다.

                       - 파라미터가 있어서는 안된다.

assertEquals(p1, p2,p3) : p1: 기대값(예상값), p2: 결과값변수(실제값), p3: 오차범위(허용오차)




package jUnitTest;


import static org.junit.Assert.*;


import org.junit.Test;


public class CalculatorTest {

@Test

public void test(){

Calculator c = new Calculator();

double res = c.sum(10, 20);

assertEquals(30, res, 0); // assertEquals(p1, p2,p3)  

 // p1: 기대값(예상값), p2: 결과값변수(실제값), p3: 오차범위(허용오차)

// if(res != 30){

// System.err.println("err :"+ res);

// }

res = c.sum(1.1, 2);

assertEquals(3.1, res, 0);

// if(res !=3.1){

// System.err.println("err :"+res);

// }

res = c.sum(1.1, -2);

assertEquals(-0.9, res, 0.1);

// if(res !=-0.9){

// System.err.println("err :"+res);

// }

}

// public void main(){

// CalculatorTest cTest = new CalculatorTest();

// cTest.jUnitTest();

// }


// public void jUnitTest(){

//

// }

 

/*

 *    @Test 어노테이션이 선언된 메소드는 - static이 들어가면 안된다.

                      - 파라미터가 있어서는 안된다.

*/


}