"스텁"이란 무엇입니까?
그래서, TDD에 더 많이 들어가기 위해 새해 결심을 계속하면서 Rhino Mocks 와 더 많은 작업을 시작하고 있습니다 .
내가하고자하는 한 가지는 내가 겪고있는 것을 정말로 파악하는 것입니다. 그래서 나는 지금까지 본 것에 대한 나의 이해를 확인하고 싶었습니다. (그리고 여기에 그것을 올리는 것이 좋을 것이라고 생각했습니다. 자원).
"스텁"이란 무엇입니까?
Martin Fowler는 이 주제에 대해 훌륭한 기사 를 썼습니다 . 그 기사에서 :
Meszaros는 테스트 목적으로 실제 객체 대신 사용되는 모든 종류의 척도 객체에 대한 일반 용어로 Test Double이라는 용어를 사용합니다. 영화에서 스턴트 더블이라는 개념에서 유래 한 이름입니다. (그의 목표 중 하나는 이미 널리 사용되는 이름을 사용하지 않는 것이 었습니다.) 그런 다음 Meszaros는 네 가지 특정 종류의 이중을 정의했습니다.
- 더미 객체는 전달되지만 실제로는 사용되지 않습니다. 일반적으로 매개 변수 목록을 채우는 데 사용됩니다.
- 가짜 객체는 실제로 작동하는 구현이 있지만 일반적으로 생산에 적합하지 않은 바로 가기를 사용합니다 (메모리 데이터베이스가 좋은 예입니다).
- 스텁은 일반적으로 테스트를 위해 프로그래밍 된 항목 이외의 항목에는 전혀 응답하지 않는 테스트 중에 작성된 호출에 대해 미리 준비된 답변을 제공합니다. 스텁은 '보낸'메시지를 기억하는 전자 메일 게이트웨이 스텁 또는 '보낸'메시지 수와 같은 통화에 대한 정보를 기록 할 수도 있습니다.
- Mocks는 우리가 여기서 말하는 것입니다. 기대되는 사전 프로그래밍 된 객체는 그들이받을 전화의 사양을 형성합니다.
내 말로하면 : 모의 객체는 특정 메소드가 호출 될 것으로 예상하고 일반적으로 기대치가 충족되지 않으면 단위 테스트가 실패합니다. 스텁 객체는 응답을 통조림 제공 (도우미 라이브러리에 의해 자동 생성 할 수 있습니다)하지만 일반적으로 않습니다 하지 직접 단위 테스트가 실패 할 수. 일반적으로 테스트하는 객체가 작업을 수행하는 데 필요한 데이터를 얻도록 방금 사용됩니다.
"스텁"은 데이터 / 어떤 종류의 응답을 제공하기 위해 존재하는 인터페이스의 구현입니다. 예를 들면 다음과 같습니다.
- 데이터 세트
- 사용자 목록
- Xml 파일
일반적으로 이것은 다른 서비스 (웹 서비스, 다른 응용 프로그램, 데이터베이스)에 의해 제공되지만 코드 의 테스트 가능성 을 향상시키기 위해 결과는 "가짜"입니다.
이것의 주요 이점은 예상 데이터를 기반으로 단위 테스트에서 어설 션을 만들 수 있다는 것입니다. 데이터 오류로 인해 오류가 발생하면 테스트를 쉽게 추가하고 새 스텁 (데이터 오류 복제)을 생성하고 오류를 수정하기 위해 코드를 생성 할 수 있습니다.
스텁 은 객체 의 상태 를 표시하고 테스트하는 데 사용되는 반면, 모의 상호 작용을 테스트 한다는 점에서 Mocks 와 다릅니다 .
"스텁"은 STartUpBlock에서 온 것 같습니다. 개발자가 시작하는 데 도움이되도록 자동 생성 된 코드 부분을 참조하는 데 사용됩니다.
"스텁"또는 "스텁 방법"은 스타터 코드이거나 아직 개발되지 않은 코드를 임시로 대체하도록 설계되었습니다. IDE에 의해 생성 된 내장 코드입니다. 스텁 메소드는 실제로 특정 클래스의 메소드를 테스트하는 데 사용되는 메소드입니다. 실제 개발 방법에서 로컬 변수에 대한 일부 값을 입력하고 출력이 올바른지 확인하여 사용됩니다. 코드에서 버그를 찾는 것이 중요합니다.
나는 최근 질문에 직면했으며 Stub 과 Driver 간의 이러한 비교 가 실제로 명확하고 도움 이된다는 것을 인식했습니다 .
기본적으로 스텁과 드라이버는 실제로 선언하고 허용하는 매개 변수를 제외하고는 아무것도하지 않는 루틴입니다. 그런 다음 나머지 코드는 이러한 매개 변수를 입력으로 사용할 수 있습니다.
+ --------- + ------------------------------- + ------- ------------------------ + | | 스텁 | 드라이버 | + --------- + ------------------------------- + ------- ------------------------ + | 타입 | 더미 코드 | 더미 코드 | + --------- + ------------------------------- + ------- ------------------------ + | 에 사용되는 | 하향식 통합 | 상향식 통합 | + --------- + ------------------------------- + ------- ------------------------ + | 목적 | 상단의 테스트를 허용하려면 | 하단의 테스트를 허용하려면 | | | 때의 코드 레벨 | 때의 코드 레벨 | | | 코드의 하위 레벨은 | 코드의 상위 레벨은 | | | 아직 개발되지 않았습니다. | 아직 개발되지 않았습니다. | + --------- + ------------------------------- + ------- ------------------------ + | 예 | A와 B는 구성 요소입니다. | A와 B는 구성 요소입니다. | | | A ---> B | A ---> B | | | | | | | A가 개발되었습니다. | 여전히 개발이 필요하다. | | | B는 여전히 개발이 필요하다. | B가 개발되었습니다. | | | 따라서 스텁이 사용됩니다 | 따라서 드라이버가 사용됩니다 | | | 그것을 흉내 내기 위해 B 대신에. | 모방하기 위해 A 대신 | | | | | | ---> 스텁 | 드라이버 ---> B | + --------- + ------------------------------- + ------- ------------------------ +
코더 수명 동안 직면 한 스텁 파일을 조사하고 기반으로 한 스텁 파일은 파일 구현의 전체 또는 일부를 포함하는 파일이라고 말합니다. 개발자가 코딩을 시작하는 데 도움이됩니다.
참고URL : https://stackoverflow.com/questions/463278/what-is-a-stub
'programing tip' 카테고리의 다른 글
이 피보나치 기능은 어떻게 기억됩니까? (0) | 2020.08.02 |
---|---|
java.util.Date와 XMLGregorianCalendar 간의 간단한 변환 (0) | 2020.08.02 |
(A + B + C) ≠ (A + C + B) 및 컴파일러 재정렬 (0) | 2020.08.02 |
Java의 정적 할당-힙, 스택 및 영구 생성 (0) | 2020.08.02 |
KeyValuePair VS DictionaryEntry (0) | 2020.08.02 |