Ttmmdd%2Ccom 1

Morgagesmortgagelending Www Jjj15 1 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 31 Ar Other Company Morgages Mortgage Lending bluepoet's diary | The boundaries of logic and reason..

Morgagesmortgagelending Www Jjj15 1 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 31 Ar Other Company Morgages Mortgage Lending

search Morgagesmortgagelending SO 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 S Company %D%17 Other Other tsearche Jjj15 Jjj15 searchw 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Morgagesmortgagelending o Www gagesearchmsearchrtsearchage Other endsearchn 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Morgagesmortgagelending toppasst%2Ebaidu%2Ecom%252Eurl7%252Eme%2FRVV6%3F%2EhtmB Jjj15 %50040111%26oq=%26ri=-27 Company C2 Morgagesmortgagelending B Www %unoxxx.com2 Www Csearch 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 searchsearch Morgagesmortgagelending www%2Cunoxxx%2Ccom 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Morgagesmortgagelending Jjj15 search Other Company search Other www.75BO.com-26uuuh Jjj15 s 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Www search Other Morgagesmortgagelending www400ii.com0 Morgagesmortgagelending search Morgagesmortgagelending Company 1.96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Company search Company Www Company search 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 Company Other searchsearch 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6

방지하기 위해서이죠.

끝으로, 윗단에 “use strict”라고 명시해 놓은 것은 strict mode에서 자바스크립트

컴파일 과정에 더욱 엄격한 체크를 하겠다는 선언입니다.

위 내용에 대한 설명은 아래 링크를 참조하시면 됩니다.

자바스크립트 코드를 객체지향적으로 만들게 되면, 기존보다 코드량이 훨씬

줄어들뿐만 아니라, DOM에서의 요소검색에서도 월등한 성능향상을

기대할 수 있습니다.

자~! 이제 자바스크립트 객제지향코드의 바다로 풍덩~ 빠져보시죠^^

카테고리: 개발, 자바스크립트 | 태그: , , | 댓글 남기기

[Mockito]Spring framework에서 Controller 테스트케이스 만들기

에 게시됨 작성자:

요즘 저에게 가장 화두가 되고 있는 단어 중에 하나가 바로 “테스트“입니다.

어떻게 하면, 테스트케이스를 통해 실제 코드를 더욱 견고하고 깔끔하게 만드는가 하는데에

따른 고민에서 시작됩니다.

바로 그 시작점인 “테스트“케이스를 만드는데 있어, 현재 가장 많이 쓰이고 있는

프레임워크인 “스프링“에서 웹 어플리케이션의 서버사이드 “프론트“를 담당하고 있는

“Contoller”부분에 대한 간단한 CRUD 테스트케이스를 만들어 보았습니다.

public class TempVo {}

 

public interface TempService {}

 

import static com.glider.framework.test.ReflectionInjectorUtils.injector;
import static org.hamcrest.Matchers.is;
import static org.junit.Assert.assertThat;
import static org.mockito.Mockito.verify;
import static org.mockito.Mockito.when;

import java.util.List;

import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
import org.mockito.Mock;
import org.mockito.runners.MockitoJUnitRunner;
import org.springframework.web.servlet.ModelAndView;

import com..common.collect.Lists;

@RunWith(MockitoJUnitRunner.class)
public class CommonControllerTest {}

	@Test
	public void getTemp() {}

	@Test
	public void insertTemp(){}

	@Test
	public void updateTemp() throws Throwable {}

	@Test
	public void deleteTemp() throws Throwable {}

	@Test
	public void getListTemp() {}
}

물론 CRUD Controller 메서드안에 더욱 복잡한 로직이 들어갈 수도 있습니다.

그럴땐, 테스트케이스가 더 복잡해지겠지요.

다만, 큰 것을 만들때는 작은 것부터 Step by Step으로 나가는 것이 좋다고 생각합니다.

스프링 framework에서 controller를 만들때는 위 테스트케이스를 뼈대로 해서,

테스트케이스를 확장해나가시면 더욱 견고한 real code를 만드실 수 있으리라고 봅니다.

단위테스트에 대해서는 토비의 스프링3에서도 여러차례 리팩토링과 함께 잘 나와있으니

참고하시면 될것 같구요(테스트대역, 스텁,  Mock Object의 개념등..)

아래 포스팅에서는 테스트케이스를 작성하는 방법과 활용에 대해서 더욱 잘 나와있으니

꼭 일독을 권해드립니다.

* 참고 url

카테고리: 개발, 테스트 | 태그: , | 댓글 1개

[디자인패턴]“템플릿-컬백”패턴 실습

에 게시됨 작성자:

최근에 토비의 스프링3를 열독하면서 소개된 “템플릿-컬백” 디자인패턴의 예제를

실습하면서 스스로도 다시 한번 블로그 포스팅을 통해 되새겨야 겠다고 생각하고

실습예제를 간단히 만들어 보았습니다.

토비님과 다른 예제를 만들려고 하였으나, 여력이 되지 않아 토비님 예제에서 살짝만

바꿔 사칙연산을 할 내용을 “파일“에서 “HTML페이지“로 바꾸어 실습해 보았습니다.

================================================================

1. 먼저 “템플릿-컬백“을 적용하기 전에 클래스 파일입니다.

public class Calculator {}

			arrList = str.split("<br>");

			for(String s : arrList) {}

			return result;
		} catch (MalformedURLException e) {} catch (IOException e) {}

		return result;
	}

	public int multi() {}

			arrList = str.split("<br>");

			for(String s : arrList) {}

			return result;
		} catch (MalformedURLException e) {} catch (IOException e) {}

		return result;
	}
}

보면 아시겠지만, HTML 페이지에서 3,4,5,6을 가져와 더하고 빼는 기능을 하는 부분 이외는

나머지 부분이 모두 동일하다는 것을 알 수 있습니다.

================================================================

2. Calculator 클래스에서 바뀌는 부분, 즉 컬백을 적용할 부분은

int result = 0;
int result = 1;

result += Integer.valueOf(s);
result *= Integer.valueOf(s);

처음에 초기값을 설정해주는 부분과 사칙연산을 하는 부분입니다.

그럼, “템플릿-컬백“을 적용하여 “인터페이스“를 두어 컬백을 수행할 부분을

추상화하여 분리하고, 나머지 공통적인 템플릿부분은 별도의 메소드로 분리하여

리팩토링을 진행하였습니다.

public int sum() {}
		};

	return templateLine(oper)-1;
}

public int multi() {}
	};

	return templateLine(oper);
}

public int templateLine(Operation oper) {}

		arrList = str.split("<br>");

		for(String s : arrList) {}

		return result;
	} catch (MalformedURLException e) {} catch (IOException e) {}

	return result;
}

인터페이스로 컬백부분을 분리하고 각기 사칙연산을 수행하는 메서드 안에서

익명내부클래스“로 정의해서 컬백에 대한 내용을 수행하고 마지막에 공통적인 부분을

수행하는 템플릿메서드에 해당 인터페이스를 구현한 익명의 객체를 파라미터로 전달하면

됩니다.

위에 리팩토링한 클래스를 테스트하는 테스트 클래스를 만들었습니다.

public class CalculatorTest {}

	@Test
	public void sumTest() {}

	@Test
	public void multiTest() {}
}

테스트를 돌려보면 기분좋은 녹색막대가 나오게 됩니다.

전에 공통적인 부분을 중복으로 사용하여 코드가 지저분했다면 간단하게 “템플릿-컬백

패턴을 사용하여 리팩토링한 결과, 깔끔하고 가독성 좋은 코드로 환골탈태하였습니다.

토비의 스프링3에 책을 보며 알게 된 사실이지만, 스프링에서 무심코 편하게 썼던

jdbcTemplate class도 사실 스프링 내부에서 “템플릿-컬백”패턴을 적용하여 돌아가고

있었다고 합니다. 사실, 생각해보니 connection을 얻어오는 부분부터 예외처리나

close처리 등이 빠져있어 그런 부분을 도대체 어디서 처리했는지 궁금증을 가져본 분이라면,

새벽에 해가 떠오르는 것처럼 “아~!“하는 감동(?)을 맛보실 수 있지 않을까 싶습니다.

================================================================

이번에 스타리그 앱을 이 ”템플릿-컬백“을 적용하여 리팩토링 하였는데, 그 포스팅도

시간되는대로 올리도록 하겠습니다^^

카테고리: 디자인패턴, 개발 | 태그: , | 댓글 남기기

[Java/Javascript]캐리지리턴과 브라우져 비호환성

pMorgagesmortgagelending Www Jjj15 1 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 31 Ar Other Company Morgages Mortgage Lending bluepoet's diary | The boundaries of logic and reason..k Aisedao WWW.97ge.cOMn m Toppasst.baidu.com%252Eurl7%252Eme%2FRVV6%3F.htm If%20inflation%20had%20not%20risen%20in%20the%201960s%20and%201970s%2C%20the%20banking%20industry%20might%20be%20healthier%20today%22.%20is%20this%20statement%20be%2C%20false%2C%20or%20uncemid%20explain%20your%20answer. pMorgagesmortgagelending Www Jjj15 1 96%B6%C0%BC%D2%5B%D7%CF%BD%F0%F0%A9%D4%C2%5D%C7%E1%B1%E4%CE%DE%D3%A2%D0%DB3D%B0%E6 31 Ar Other Company Morgages Mortgage Lending bluepoet's diary | The boundaries of logic and reason..d w Morgages Mortgage Lending o 123462.com f Www.75bo.om Www.400ii.com