내가 작성한 WCF 호스트 관리 엔진을 단위 테스트하려고합니다. 엔진은 기본적으로 구성을 기반으로 즉석에서 ServiceHost 인스턴스를 만듭니다. 이를 통해 새로운 서비스가 추가되거나 이전 서비스가 제거 될 때마다 서비스를 모두 종료하고 다시 시작할 필요없이 사용할 수있는 서비스를 동적으로 재구성 할 수 있습니다.
그러나 ServiceHost의 작동 방식으로 인해이 호스트 관리 엔진을 단위 테스트하는 데 어려움이 있습니다. 특정 끝점에 대해 ServiceHost가 이미 생성되고 열렸지만 아직 닫히지 않은 경우 동일한 끝점에 대해 다른 ServiceHost를 만들 수 없으므로 예외가 발생합니다. 최신 단위 테스트 플랫폼은 테스트 실행을 병렬화하기 때문에이 코드 조각을 단위 테스트 할 효과적인 방법이 없습니다.
확장 성 때문에 테스트를 직렬로 실행하도록 강제하는 방법을 찾을 수 있기를 바라면서 xUnit.NET을 사용했습니다. 그러나 나는 운이 없었습니다. 나는 여기 누군가가 비슷한 문제를 겪고 단위 테스트를 직렬로 실행하는 방법을 알고 있기를 바랍니다.
참고 : ServiceHost 는 Microsoft에서 작성한 WCF 클래스입니다. 나는 그 행동을 바꿀 능력이 없습니다. 각 서비스 엔드 포인트를 한 번만 호스팅하는 것도 적절한 동작이지만 단위 테스트에는 특별히 도움이되지 않습니다.
TestServer
도커에서 여러 번 실행하려고 비슷한 문제가 발생 했습니다. 그래서 통합 테스트를 직렬화해야했습니다.