2011-04-18 4 views
2

모든 공용 정적 리소스의 단일 인스턴스를 공유하는 UnitTests에 일부 TestMethod를 작성하려고합니다.C# UnitTest 단위 테스트에 걸쳐 개체의 단일 인스턴스를 공유합니다.

내 단위 테스트의 생성자에서 다른 C# 프로젝트에있는 공용 정적을 인스턴스화합니다. 그럼 내 모든 테스트가이 정적 인 정적 정보에 액세스합니다.

그러나 테스트 클래스의 새 인스턴스가 해당 UnitTest 클래스 내의 각 TestMethod에 대해 인스턴스화 된 것처럼 보입니다.

이러한 테스트가 공용 정적 인스턴스를 공유하도록 허용 할 수 있습니까?

또는 서비스를 테스트하기 위해 사용해야하는 또 다른 기술이 있습니까?

** UPDATE **

좋아 그것은 내가 달성하고 싶은에 대한 잘못된 접근 방식을 사용하고 나타납니다.

이미 예상대로 작동하는 공유 리소스없이 테스트중인 UnitTests가 이미 있습니다.

내가 달성하려는 것은 웹 서비스/HTTP 인터페이스 또는 TcpListener를 통한 직접 연결을 통해 노출 된 서비스에 대한 동시 연결을 테스트하여 직렬화 된 바이트 []를 전달하는 방법입니다.

연결된 각 클라이언트는 서비스를 통해 서로 상호 작용하고 있습니다.

이 테스트는 공개 된 네트워크 인터페이스보다 낮은 레벨에서 가상 클라이언트의 신뢰성 및 상호 운용성을 테스트하는 데 그 목적이 있습니다.

서비스가 네트워크 인터페이스를 통해 노출되는 것과 동일한 기능을 제공하는 일부 공용 정적 개체로 래핑되었습니다.

이러한 개체에 연결하고 응답을 기반으로 다른 결과를 주장하는 가상 클라이언트를 만드는 방법이 필요합니다.

+3

어떤 테스트 러너를 사용하고 있습니까? – jason

+1

"공용 정적을 인스턴스화"한다는 것은 무엇을 의미합니까? 공공 정적 무엇? 코드 샘플을 입력하십시오. –

답변

7

일반적으로 단위 테스트에서 모든 상태를 공유하지 않으므로 폴스 스루 오류 가능성이 줄어 듭니다. 이러한 테스트를 통과하기 위해 각 테스트의 예상 시작 상태를 설정해야합니다.

예를 들어 공유 정적 SomethingOrOther이 필요한 경우 각 단위 테스트에 대해 올바른 상태로 새 것을 만듭니다.

관련 문제