«mocking» 태그된 질문

모의 및 속임수는 실제로 다른 구성 요소 나 응용 프로그램의 종속성을 사용하지 않고 단위 테스트가 테스트 가능한 코드 단위에 대해서만 실행되도록 코드 또는 구성 요소를 분리하는 방법입니다. 모의는 모의가 검사 결과를 주장하기 위해 검사 될 수 있다는 점에서 위조와 다릅니다.

4
모의 객체는 언제 사용해야합니까?
TDD에 대해 많은 것을 읽었지만 여전히 의심의 여지가 있습니다. 예를 들어 다음과 같은 클래스 다이어그램이 있습니다. TDD 및 모의 객체에 대해 배우는 간단한 예입니다. 어떤 시험을 먼저 작성해야합니까? 제품 , 라인 및 마지막 주문 ? 그렇게하면 라인 및 제품 을 사용 하여 주문 을 테스트 해야합니까, 아니면 모의 객체를 사용해야합니까? …

1
이미지 처리 코드를 단위 테스트하는 방법?
이미지 처리 (주로 OCR)에서 일하고 있으며 개발시 단위 테스트를 어떻게 통합해야하는지 궁금합니다. 이미 "일반적인"코드 유형에 대해 단위 테스트를 사용하고 있지만 이미지 처리 코드를 처리 할 때는 어떻게 처리해야할지 잘 모르겠습니다. 이러한 종류의 코드에는 항상 일부 이미지 데이터 입력 / 출력이 필요하며이를 조롱하는 것은 분명하지 않습니다. 지금은 주로 통합 테스트를 수행하고 …

4
복잡한 API (예 : Amazon S3)에 의존하는 코드를 테스트하는 방법은 무엇입니까?
Amazon S3에 문서를 업로드하는 방법을 테스트하는 데 어려움을 겪고 있지만이 질문은 사소한 API / 외부 의존성에 적용된다고 생각합니다. 나는 세 가지 잠재적 인 해결책을 생각해 냈지만 만족스러운 것은 없습니다. 코드를 실행하고 실제로 문서를 업로드하고 업로드 된 AWS API를 확인한 후 테스트가 끝나면 삭제하십시오. 이렇게하면 테스트 속도가 매우 느려지고 테스트를 실행할 …
13 testing  mocking 

4
모의가 개방 / 폐쇄 원칙을 위반합니까?
얼마 전에 나는 찾을 수없는 스택 오버플로 답변에서 공개 API를 테스트해야한다고 설명하는 문장을 읽었으며 저자는 인터페이스를 테스트해야한다고 말했습니다. 저자는 또한 메소드 구현이 변경되면 테스트 케이스를 수정할 필요가 없다고 설명했다. 이렇게하면 테스트중인 시스템이 작동하는 계약을 깨뜨릴 수 있기 때문이다. 즉, 메소드가 작동하지 않으면 테스트가 실패하지만 구현이 변경 되었기 때문에 실패해야합니다. 우리가 …

2
테스트-인 메모리 DB와 모의
테스트를 작성할 때 누군가가 데이터를 모의하는 것보다 메모리 내 데이터베이스를 사용하려는 이유는 무엇입니까? 인 메모리 데이터베이스가 리포지토리를 테스트하는 데 도움이 될 수 있음을 알 수있었습니다. 그러나 스프링 데이터와 같은 프레임 워크를 사용하는 경우 리포지토리를 테스트하면 실제로 응용 프로그램 논리가 아닌 프레임 워크를 테스트하게됩니다. 그러나 조롱은 더 빠르며 단위 테스트 및 …

3
하드 코딩 된 객체로 메소드를 조롱하는 방법?
여러 레이어가있는 응용 프로그램을 작성 중입니다. 데이터 소스에서 데이터를 검색하고 저장하는 데이터 액세스 계층, 데이터를 조작하는 비즈니스 로직, 화면에 데이터를 표시하는 사용자 인터페이스. 또한 비즈니스 로직 계층의 단위 테스트를 수행합니다. 유일한 요구 사항은 비즈니스 계층 논리의 흐름을 테스트하는 것입니다. 그래서 Moq 프레임 워크를 사용하여 데이터 액세스 계층을 조롱하고 MS Unit으로 …

3
모의 콘크리트 클래스-권장하지 않음
방금 구체적인 클래스를 조롱하는 것이 권장되지 않는 몇 가지 이유를 설명하는 "Growing Object-Oriented Software"책을 읽었습니다. MusicCentre 클래스의 단위 테스트 샘플 코드는 다음과 같습니다. public class MusicCentreTest { @Test public void startsCdPlayerAtTimeRequested() { final MutableTime scheduledTime = new MutableTime(); CdPlayer player = new CdPlayer() { @Override public void scheduleToStartAt(Time startTime) { …

1
조롱이 얼마나 옳은가?
나는 "그것이 달려있다"고 확신하기 때문에 농담으로 질문의 제목을 붙 였지만, 몇 가지 구체적인 질문이 있습니다. 많은 계층의 종속성이있는 소프트웨어에서 작업하면서 팀은 각 코드 모듈을 그 아래의 종속성과 분리하기 위해 상당히 광범위하게 조롱하는 데 익숙해졌습니다. 따라서 Roy Osherove 가이 비디오 에서 5 % 정도의 조롱을 사용해야한다고 제안한 것에 놀랐습니다 . 우리가 …

2
동적 언어로 모형을 만드는 동안 유형 오류가 어떻게 감지됩니까?
TDD를 수행하는 동안 문제가 발생합니다. 몇 번의 테스트 통과 후 일부 클래스 / 모듈의 반환 유형이 변경됩니다. 정적으로 유형이 지정된 프로그래밍 언어에서, 이전의 조롱 된 객체가 다른 클래스 의 테스트에서 사용되었고 유형 변경을 반영하도록 수정되지 않은 경우 컴파일 오류가 발생합니다. 그러나 동적 언어의 경우 리턴 유형의 변경이 감지되지 않고 다른 …

5
TDD : 단단히 결합 된 객체 모의
때때로 객체는 단단히 결합되어야합니다. 예를 들어 CsvFile클래스는 CsvRecord클래스 (또는 ICsvRecord인터페이스) 와 밀접하게 작동해야합니다 . 그러나 과거에 배운 내용에서 테스트 중심 개발의 주요 원칙 중 하나는 "한 번에 여러 클래스를 테스트하지 마십시오"입니다. 의미하는 ICsvRecord실제 인스턴스 대신 모의 또는 스텁 을 사용해야합니다 CsvRecord. 그러나이 접근법을 시도한 후에 나는 CsvRecord수업 을 조롱 하면 …
10 tdd  coupling  mocking 

1
기능적 스타일은 의존성 조롱에 어떻게 도움이됩니까?
최근 Java Magazine 호에서 Kent Beck과의 인터뷰에서 : 빈 스톡 : 마이크로 서비스에 대해 논의 해 보자. 마이크로 서비스에 대한 테스트 우선은 일부 서비스가 작동하기 위해서는 다른 서비스가 많이 필요하다는 점에서 복잡해질 것 같습니다. 동의하십니까? Beck : 하나의 큰 클래스 나 많은 작은 클래스를 갖는 것과 같은 트레이드 오브 트레이드 …

4
새로운 언어가 처음부터 TDD하기 쉽도록 설계된 경우 어떻게됩니까?
가장 일반적인 일부 언어 (Java, C #, Java 등)를 사용하면 코드를 완전히 TDD하려는 경우 언어와 충돌하는 경우가 있습니다. 예를 들어 Java 및 C #에서는 클래스의 모든 종속성을 조롱하고 대부분의 조롱 프레임 워크는 클래스가 아닌 인터페이스를 조롱하는 것이 좋습니다. 이것은 종종 단일 구현으로 많은 인터페이스를 가지고 있음을 의미합니다 (이 효과는 TDD가 …
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.