2010-02-03 4 views
1

외부 컨트롤 (외부 컨트롤)에 의해 호스팅되고로드 된 .Net 클래스 라이브러리 어셈블리의 클래스에 대해 NUnit 유닛 테스트를 실행하고 싶습니다. 실행 시간.외부 호스트 프로세스 종속성을 이용한 유닛 테스트

테스트 할 클래스는 호스트 프로세스 내에서 인스턴스화해야하는 호스트 exe 내에 정의 된 클래스에서 파생됩니다. 호스트 프로세스 외부에서 기본 클래스의 파생물을 인스턴스화하려는 시도는 예외적으로 실패합니다.

따라서 NUnit GUI 또는 콘솔 테스트 호스트에서는 클래스를 인스턴스화하고 클래스를 인스턴스화하는 것으로 클래스를 테스트 할 수 없습니다. 누구든지이 테스트를 어떻게 실행할 수 있는지에 대한 제안이 있습니까?

답변

2

아마도 클래스를 두 클래스로 나눠 줄 수 있습니다 - 외부 프로세스의 유형에서 파생 된 '외부'클래스와 모든 작업을 수행하지만 내부에서 수행하지 않는 '내부'클래스 통제하지 마라.

그런 다음 내부 클래스를 테스트하고 가능한 외부 논리가없는 상태로 둡니다.

코드는 종속성에서 어떤 식 으로든 분리 할 수있을 때 거의 항상 더 쉽습니다.

+0

+1 적용되는 험블 오브젝트 패턴입니다. –

0

소스를 테스트하고 절차를 수행 할 때 이러한 외부 클래스 메소드를 호출하면 어쩌면 전체 외부 프로세스를 조롱하여 문제를 해결할 수 있습니다.

귀하의 호스트 클래스처럼 동작하도록 mock을 디자인 할 수 있습니다.

  • 모의 로딩 런타임 라이브러리 (관심의 범위에서 해당) 특정 방법에서
  • 모의 가능한 모든 출력
  • 모의 예외

아니에요 이후 : 포함

.NET 개발자 나는 세부 사항에 익숙하지 않지만 .NET의 조롱 엔진은 매우 강력하다는 것을 알고 있습니다.