문제

방금 재미있는 것을 보았습니다 장치 테스트에 대한 YouTube 비디오 (유머가 장애가 있다면 kip) 스터브가 둥글게 비판을받는 곳에서 팀을 씹는 가짜 자막이있는 히틀러입니다. 그러나 나는 스터브에 어떤 문제가 있는지 이해하지 못한다.

나는 조롱 프레임 워크를 사용하기 시작하지 않았고 고통을 사용하지 않은 고통을 느끼기 시작하지 않았습니다.

나는 언젠가는 세상에 상처를 입히고 있습니까? 조롱 (Rhinomock 등) 대신 손으로 쓴 스터브와 가짜를 선택 했습니까? (파울러의 분류법 사용)

모의와 필기 스텁 사이를 따기위한 고려 사항은 무엇입니까?

도움이 되었습니까?

해결책

스터브에는 아무런 문제가없고, 스터브, 모의 및 스파이를위한 공간이 있습니다. 모두 "테스트 복식"이지만 다음과 같은 목적이 다릅니다. 모의와 스터브는 스파이가 아닙니다:

...] 계속 진행하기 전에, 나는 여기서 사용중인 용어를 명확히하고 정의하고 싶습니다. 원래 Gerard Meszaros에서 발견했습니다. Xunit Patterns Book.

  • 더미 객체는 테스트중인 시스템에 전달되는 자리 표시 자 객체이지만 사용되지 않았습니다.
  • 테스트 스텁은 간접 입력으로 테스트중인 시스템을 제공합니다.
  • 테스트 스파이는 테스트중인 시스템이 올바른 간접 출력을 수행했는지 확인하는 방법을 제공합니다.
  • Mock Object는 간접 입력 및 간접 출력을 확인하는 방법으로 테스트중인 시스템을 제공합니다.

...]이 편리한 차트가 결정을 안내 할 수 있습니다.

alt text

추신: Mockito- 블록의 새로운 모의 프레임 워크 읽을 가치가 있습니다.

다른 팁

나는 다음 용어를 사용합니다 (유닛 테스트의 예술 작가 인 Roy Osherove가 소개 함) :

가짜 a 그루터기 방법이 그러한 매개 변수로 호출되는 경우를 대비하여 무언가를 가짜라고 말하면. 그러나 그러한 전화가 실제로 발생했거나 정확히 n 번에 일어났다는 것을 확인하면 그러한 가짜는 모조품. 요컨대. 가짜는 verife ()를 호출하지 않는 한 스터브입니다.

분명히, 당신은 어떤 경우에는 스터브를 사용하고 다른 경우에는 조롱해야합니다. 따라서 스터브를 둥글게 비판하는 것은 아마도 잘못되었으며 스터브를 독점적으로 사용하는 것도 아마도 잘못 일 것입니다.

조롱 프레임 워크를 사용하지 않은 경우 (대체 용어 : 격리 프레임 워크), 당신은 그들을 주시하고 옵션을 자주 재평가해야합니다. 나는 수동 모의에서 nmock2로 갔다. 여기에 흥미로운 것이 있습니다 투표 그들이 사용하는 것을 보여주는 프로그래머의. 수동 조롱/스터브는 소수이지만 드문 일은 아닙니다.

모의는 버리기가 훨씬 쉽습니다. 그들은 수업의 실제 인스턴스이며, 최소한의 보일러 플레이트로 모든 방법의 동작을 무시할 수있는 능력으로 사전 스터드됩니다.

다음과 같은 고려 사항이 거의 없습니다. 방법을 처리하고 싶지 않다면, No-OP 역할을하거나 테스트에 실패 할 수 있지만, 어느 쪽이든 코드가 거의 없습니다. .

수업을 스튜어트 할 때 얼마나 많은 보일러 플레이트를 얻습니까? 수업이 최종적이면 어떻게 처리합니까? 먼저 클래스 경로에서 스터브를 얻기 위해 트릭을합니까, 아니면 다른 소스를 사용합니까?

모의로 시작하는 것이 좋습니다.

모의 대신 스터브를 사용하는 데 아무런 문제가 없습니다.

기술을 얻으려면 모의가 확인할 수있는 기대치가있는 "스마트"객체입니다. 스텁은 사전 설정 값을 반환하는 더미 개체입니다. 보다 모의는 스터브가 아닙니다.

그러나 많은 사람들 (나 자신이 포함 된)은 모의 행동 테스트보다는 스터브로 상태 테스트를 선호합니다. 테스트중인 클래스에 스터브를 주입하고 방법을 호출 한 다음 테스트중인 클래스의 상태를 확인합니다. 이 클래스의 내부가 인수 Y가있는 모의 객체의 메소드 X라고 불리는 것을 주장하는 것보다 덜 취성 테스트를하는 경향이 있습니다.

나는 당신이 상처의 세상을 위해 있다고 생각하지 않습니다. 고통을 느끼기 시작하지 않았다면 아직 고립/조롱 프레임 워크가 필요하지 않을 것입니다. 언제 그리고 만약 당신이 할 때, 손으로 쓴 스터브/가짜가 주위에 있으면 아무것도 아프지 않을 것입니다.

인터페이스가 많거나 인터페이스에 많은 메소드가있는 경우 분리/조롱 프레임 워크를 사용하면 핸드 코딩 스터브보다 많은 시간을 절약 할 수 있습니다.

좋아요 모크 많이; 스터브를 만드는 데 코뿔소 모의보다 사용하기가 더 쉽습니다.

조롱과 스텁은 실제 단위 테스트를 달성하는 데 사용됩니다. 당신은 모든 종속성을 조롱하고 단위를 고립으로 테스트합니다.

현재 사용 중입니다 모크 조롱과 스터브를 위해.

라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top