시간의 약 30 %가 실패한 단위 테스트를 디버깅하려고합니다. 그것은 유감스럽게도 코드에 중단 점이있을 때 결코 실패하지 않기 때문에 타이밍 문제 일 것 같습니다.왜 중단 점에 도달 한 후에 변수 값이 변경됩니까?
그래서 어설 션이 거짓 일 때 발생하는 문제의 어설 션에서 조건부 중단 점을 설정합니다. 예상대로 브레이크 포인트를 1/3 정도 쳤습니다. 그러나 실제로 표현식의 값을 검사 할 때 모든 것이 정상적으로 보입니다. 그리고, 필자가 계속해서 히트하면 테스트가 성공합니다.
왜 이런 경우가 될지 이해할 수 있습니까? 다른 스레드가 값을 수정했다면 중단 점에 도달했을 때 스레드가 멈추지 않습니까? 또는 이런 일이 일어나고 있다는 것이 가능하다 :
- 확인 조건이 ... 사실
- 다른 스레드로 평가 변수
- 브레이크를 수정 난 정말 특정 찾는 게 아니에요
내 문제에 대한 해결책 (합리적으로 게시 할 코드가 너무 많거나 누군가가 지나치게 터벅 터벅 걸을 것으로 예상). 조건부 중단 점이 작동하는 방식에 대한 일반적인 정보를 찾고 있습니다. 이러한 이유가 발생할 수 있습니다.
참고 : Visual Studio 2012 (및 .NET 4.0 C#이 중요한 경우)를 사용하고 있습니다.
또한 참고 : 여기에
이 실패 주장이다foreach (KeyValuePair<Guid, DateTime> time in state.Times) {
Assert.IsTrue(time.Value > DateTime.Now.AddYears(2) && time.Value <= DateTime.Now.AddYears(3));
}
코드는 어떻게 생깁니 까? – ChrisBint
정말 그 중단 점과 관련이 없다고 생각합니다. 중단 점에 도달하면 모든 실행이 중지됩니다. – climbage
그 값을 변경하는 다른 스레드가 있습니까? – MattW