>  기사  >  Java  >  새로운 Java 운동: 테스트 주도 개발 3---사용자 등록 2

새로운 Java 운동: 테스트 주도 개발 3---사용자 등록 2

黄舟
黄舟원래의
2016-12-30 13:13:111134검색

테스트 중심 개발(TDD)은 실제로 새로운 개념은 아니지만 이 방법론의 본질을 오해하는 경우가 많습니다. 제 경우에는 테스트 주도 개발이란 단위 테스트를 작성하여 코드를 완전히 테스트하는 것을 의미한다고 생각합니다. 실제로 이것은 테스트 중심 개발에 대한 가장 일반적인 오해 중 하나입니다. 테스트 중심 개발은 테스트뿐만 아니라 드라이브 개발도 강조합니다. 테스트케이스를 작성하는 목적은 테스트뿐만 아니라 디자인, 기능과 인터페이스의 디자인, 기능이나 인터페이스의 사용자 관점에서의 디자인인 반면, 다른 방법론에서의 디자인은 개발자 관점의 디자인, 따라서 테스트 중심 개발은 좋은 디자인을 생산하는 데 더 도움이 됩니다.

그러나 단순히 테스트를 통해 설계하고 코드 품질을 보장하기 위한 테스트를 실행하는 것만으로는 고품질 소프트웨어 제품을 생산하는 데 충분하지 않습니다. 테스트 주도 개발 역시 코드의 불합리한 부분을 리팩토링하는 리팩토링을 강조하는데, 이 리팩토링은 테스트 작성, 개발, 검증 과정마다 수행되어야 하기 때문에 이를 보장할 수 있는 테스트 케이스가 있다. 의도하지 않은 결과에 대해 걱정하지 않고 자신감 있고 대담하게 리팩터링하세요.

우리 프로젝트의 MainServlet에서 모든 비즈니스 로직을 구현했지만 모든 애플리케이션 로직이 이 클래스에 기록되면 해당 클래스는 거대해질 것이라는 점을 곧 깨닫게 될 것입니다. 유지 관리가 불가능하므로 사용자 등록 비즈니스 로직 구현을 사용자 모듈에 넣어야 합니다. 보시다시피, 우리는 시스템을 재구성하기 시작했습니다.

먼저 사용자 패키지를 생성하고 이 패키지 아래에 UserMngr 클래스를 생성합니다. 왜냐하면 기본 사용자 정보를 유지하는 것 외에도 사용자 모듈은 사용자 그룹, 사용자 레벨, 사용자 포인트도 유지해야 한다고 추정하기 때문입니다. 호출자가 이러한 세부 사항을 완전히 이해할 필요는 없으므로 여기서는 Facade 모드를 사용하고 사용자에 대한 모든 작업은 UserMngr을 통해 수행됩니다. 코드는 다음과 같습니다.

public class UserMngr {  
    public static long registerUser(Map<String, Object> userInfo) {  
        return 101;  
    }  
}

이 클래스에서는 재구성된 아키텍처가 나중에 작동할 수 있는지 빠르게 확인하기 위해 값만 반환하고 아무 작업도 수행하지 않습니다. 또한 여기서는 매개변수 항목에 주의해야 합니다. 즉, 매개변수는 PHP에서와 유사한 배열로 전달됩니다. Java에서는 이러한 목적을 위해 값 개체 클래스를 설계하는 것이 더 일반적이지만 이로 인해 많은 값 개체 클래스가 정의되거나 공유의 필요성으로 인해 값 개체가 매우 큽니다. 여기서는 Map을 사용하여 매개 변수를 전달합니다. , 그러한 문제가 필요하지 않습니다.

아래 MainServlet에서 사용자 모듈을 호출하는 코드를 추가합니다.

private void registerUser(HttpServletRequest request, HttpServletResponse response) 
			throws IOException, ServletException {
		String userName = null;
		if (request.getParameter("userName") != null) {
			userName = request.getParameter("userName");
		}
		Map<String, Object> userInfo = new HashMap<String, Object>();
		userInfo.put("userName", userName);
		long userId = UserMngr.registerUser(userInfo);
		Map<String, Object> model = new HashMap<String, Object>();
		model.put("userId", "" + userId);
		request.setAttribute("model", model);
		/*this.getServletContext().getRequestDispatcher("/caporder/apply_capital.jsp")
			.forward(request, response);*/
	}

아래 테스트 사례를 실행하면 이번에는 아키텍처 재구성이 성공했음을 증명합니다.

위 내용은 New Java Movement: Test Driven Development 3---사용자 등록 2의 내용입니다. 더 많은 관련 내용은 PHP 중국어 홈페이지(www.php.cn)를 참고해주세요!


성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.