Java

[JUnit] Test Driven Development(TDD) 테스트 주도 개발

UKkim 2018. 3. 12. 08:44



# 사용 목적 : 코드의 Input / Output을 알고 로직이 정상적으로 구현 되었는지는 파악하기 위함으로 사용하였다. 수업 간에 배우는 메서드의 경우에는 내용이 단순하여 불필요한 작업으로 보일 지 모르지만 복잡한 메서드를 활용하게 되면 더 효용 가치가 높아진다.


# 가능한 여러 TEST CASE를 구현하는 것이 중요하다.


# 예시

package Day6;

import static org.junit.Assert.*;

import org.junit.Test;

public class CheckMethod {

 //Test Driven Development(TDD) 테스트 주도 개발
 
 // 1번 문제 ------------------------------
 @Test
 public void test1_1() {
  assertTrue(mid(1,2,3)==2);
 }
 @Test
 public void test1_2() {
  assertTrue(mid(2,2,2)==2);
 }
 @Test
 public void test1_3() {
  assertTrue(mid(1,2,1)==2);
 }
 @Test
 public void test1_4() {
  assertTrue(mid(1,6,8)==6);
 }
 @Test
 public void test1_5() {
  assertTrue(mid(9,3,6)==6);
 }
 @Test
 public void test1_6() {
  assertTrue(mid(7,4,5)==5);
 }
 // 2번 문제 ------------------------------
 @Test
 public void test2_1() {
  assertTrue(SumDigit(123)==6);
 }
 
 @Test
 public void test2_2() {
  assertTrue(SumDigit(12345)==15);
 }
 
 @Test
 public void test2_3() {
  assertTrue(SumDigit(777)==21);
 }
 
 @Test
 public void test2_4() {
  assertTrue(SumDigit(987)==24);
 }
 
 @Test
 public void test2_5() {
  assertTrue(SumDigit(1111111)==7);
 }

 // 3번 문제 ------------------------------
 @Test
 public void test3_1() {
  assertTrue(palinromCheck(12345)==false);
 }
 
 @Test
 public void test3_2() {
  assertTrue(palinromCheck(1441)==true);
 }
 
 @Test
 public void test3_3() {
  assertTrue(palinromCheck(12788721)==true);
 }
 
 @Test
 public void test3_4() {
  assertTrue(palinromCheck(1112456654)==false);
 }
 
 @Test
 public void test3_5() {
  assertTrue(palinromCheck(111121)==false);
 }
 
 int mid(int x,int y, int z){
  // 중간값인지를 if문으로 확인 x<=y<=z 성립이면 mid에 중간값을 담는다.
  if((y<=x && x<=z)||(z<=x && x<=y)){
   return x;
  }else if((x<=y && y<=z)||(z<=y && y<=x)){
   return y;
  }
   return z;
 }
 
 int SumDigit(int x){
  int result = 0;
  while(x>0){  
    result += x%10; // 1의 자리값을 result에 더함.
    x = x/10; // 10으로 나누어 12345 -> 1234 와 같이 만듬.
  }
  return result;
 }
 
 boolean palinromCheck(int x){
  boolean result = true;
  /*
  String xString = x+""; // 길이함수와 charAt 함수를 쓰기위한 형변환
  int length = xString.length();
  
  // 맨 앞과 뒤를 하나씩 비교하여 가운데까지 비교. 홀수의 경우 정가운데 숫자는 비교할 필요가 없음.
  for(int i = 0; i<length/2;i++){
   if(xString.charAt(i) != xString.charAt(length-i-1)){
    result = false;
    break;
   }
  }
  */
  int length = 0;
  int x1=x;
  while(x1>0){
   length++;
   x1=x1/10;
  }
  
  for(int i = 1 ; i <= length; i+=2){
   if(x%10!=x/(int)Math.pow(10, length-i)){
    result = false;
    break;
   }
   x = (x%(int)Math.pow(10, length-i))/10;
   System.out.println(x);
  }
  
  return result;
 }
 
static int unique3(){
  
  int result = 0;
  int[] num = new int[3]; // 중복되지 않은 값을 담기위해 배열을 생성
  
  for (int i=0; i<num.length;i++){
   num[i]=(int)(Math.random()*9+1);
   for(int j = 0; j < i; j++){
    if(num[i]==num[j]){ // 중복되는 값이 있을시 i-- 를 해줌으로서 다시 랜덤값을 받을 수 있게 함.
     i--;
     break;
    }
   }
  }
  result = 100*num[0] + 10* num[1]+num[2];
  return result;
 }

}