2011-10-21 2 views
2

나는 StartStop 사이의 시간을 측정하는 수업을 가지고 있습니다. 나는 StartStop 사이의 boost::this_thread::sleep을 사용하여 잠들는 단위 테스트를 만들었으며 그 결과가 잠자기 시간과 가까운지 테스트합니다.스톱워치의 단위 테스트 작성 방법은 무엇입니까?

그러나이 테스트는 빌드 에이전트에서 실패하지만 개발 시스템에서는 실패합니다. 문제는 다음과 같습니다. 이것이 스톱워치의 실제 문제인지 여부 또는 빌드 에이전트 (다른 ​​프로세스를 실행 중이고 가상 시스템)가 내가 말한 것보다 오래 잠을 잔 수있는 "문제"인지 어떻게 알 수 있습니까?

그래서 질문 : "정확히 x 초가 걸리는 작업을 수행합니까?"와 같은 것을 작성하는 강력한 방법이 있습니까?

고맙습니다.

답변

7

비 실시간 시스템에서 이와 같이 안정적으로 테스트 할 수있는 방법은 없습니다. 방법은 스톱워치가 사용하는 시스템 시간을 얻기위한 API를 랩핑하고 테스트에서 조롱하는 것입니다.

1

사용중인 운영 체제에 따라 다릅니다. 다중 프로그래밍을 지원하는 시스템에서 스레드의 실행 시간은 결정적이지 않습니다. 그러나 일부 실시간 시스템에서는 스레드가 최우선 순위 인 경우 거의 정확합니다. 스레드가 OS 스케줄러에 의해 선점되지 않으므로 해당 사례를 시뮬레이트하기 위해 인터럽트를 비활성화 할 수 있어야합니다.

1

수면 전후의 시스템 시간을 사용하고 잠자기 시간이 아닌이 시간의 차이 만 참조하십시오.

1

스톱워치의 해상도는 무엇입니까? 초 단위로 정확해야하고 3 초 동안 자고 2.9와 3.1 사이인지 확인하면 도움이 될 것입니다. mili/nano 초 정확도가 필요하다면 첫 번째 응답에서 제안한 것과 같이 타임 스탬프 모의를 사용해야합니다.

관련 문제