문제

나는 이상한 문제입니다.나는 단위의 테스트는 계속에 갇히 실행하 모니다.을 실행할 때 동일한 테스트에서는 디버그와 함께,중단점,테스트를 통과 할 때마다.

기본적으로,그것은 소켓 연결을 시험합니다.내가 먼저 연결 해제 소켓한 다음 다시 연결해 보십시오,그리고 내가 노력하고 있는지 확인하려면 다시 연결이 성공적이었다.

에서 어딘가에 연결 코드는,내가 확인이 있다면 소켓 예외는 아니다.이 경우,사용자가 제시하는 몇몇 선택 대화상자에서 동안의 연결 코드는 정지를 통해 AutoResetEvent 기다리고 결정합니다.

그것은 이 AutoResetEvent 시스템이 중단됨.제공해야 합 코드에 의해 단위에 있는 테스트입니다.그러나 나의 질문은 어떻게 이것이 통과하는 디버그 모드에서?이 있습에 대한 특별한 무언가가 그것에 의하여 디버그 모드 AutoResetEvents 자동으로 설정하여 Visual Studio?

편집

그것은 참으로 경쟁 상태입니다.추가 지연되는 코드 후에는 내 분리 코드,그리고 이제 작동합니다.하지만 그것도 친히 이상하게 경쟁이 있다는 조건으로 시작 됩니다.게 정교하여 붙여넣기의 일부는 코드입니다.

이 테스트 코드:

MySystem.FindEquipment(new List<string>(1) { "192.1.1.243:28000" });
MySystem.ConstructSystem();
MySystem.IsConstructedFlag.WaitOne();
Assert.AreEqual(1, MySystem.CommunicationController.HardwareIPList.Count);

PFFrame frame1 = MySystem.Frames["0.x.x"];

Assert.IsTrue(frame1.Disconnect());
Thread.Sleep(100);
Assert.IsTrue(frame1.Connect());

이 날,내가 나를 기다리는 반환에 diconnect 코드를 호출하기 전에 연결하는 코드입니다.마지막 부분의 차단 코드는 다음과 같습니다:

lclSocket.Shutdown(SocketShutdown.Both);
lclSocket.Close();
OnSocketDisconnected(new PFSocketConnectionEventArgs(ipEp));
return true;

은 그것 때문에 Socket.종료()및/또는 소켓에.Close()방법을 실행 스레드가?따라서는 반환하는 값에서 나를 분리 코드 소켓지 않습니다 실제로 진정한 해결 방법.

도움이 되었습니까?

해결책

그것은 소리는 레이스 같은 상태입니다.디버 코드는 일반적으로 실행되는 많은 물건에서',그리고는 차이점에서 타이밍이를 던지는 아마도 당신의 테스트를 끕니다.

물론 보지 않고 코드,우리가 정말 당신을 도울 수 있습니다.

다른 팁

가능성이 높기 때문에 실을 꿰는다.그들은 매우 민감한 타이밍 및 타이밍 디버그 빌드에서 다른 것입니다.할 수 있는 도구를 사용하여 체스처럼 운동하는 버그와 같습니다.

그러나 사용 Tools+프로세스에 연결을 처음이다.디버깅+Break 모든 디버깅+윈도우+스레드에 스레드를 호출 스택입니다.수도 있습을 볼 수 있는 원인이 레이스 또는 교착 상태가 발생합니다.

비슷한 문제를 했다면 내가 어디에 비해 두 날짜,그리고 예상된 중 하나는 날이 다른 후,하지만 그것 때문에 실행되었는 빠르고,그들이 받은 동일한 타임스탬프입니다.

이 테스트는 말하고 당신의 코드가 제대로 격리에서 소켓 라이브러리를 사용합니다.는 코드를 테스트해야 하지 않을 특정 이슈에서 이 라이브러리입니다.를 추가할 필요가 있는 추상화 사이 소켓 라이브러리는 아티팩트로 acoount.

그 이유는 내가 이것을 말하는 것은 어떤 경우 소켓을 실제로 연결이 끊어 123,251 시간 < 100 밀리초지만,123,252nd 시간이 분리 소 101 밀리초.

내가 권하고 그 거의 모든 장치-테스트 코드를 사용하지 threading.나서 실을 꿰는 호출의 모든 유형 단 테스트 코드 냄새가 있다.일반적으로 위치를 확인하고 싶 실을 꿰는 문제에 통합 수준입니다.

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