2017-02-27 10 views
0

현재 날짜를 가져와 제공된 값과 비교하기 위해 getdate()을 사용하는 저장 프로 시저가 있습니다.getdate()를 사용하는 저장 프로 시저의 단위 테스트 우수 사례

그러나 테스트를 위해 일반적으로 테스트를 위해 입력 데이터와 출력 데이터를 미리 준비하고이 데이터 사이에 미리 정의 된 날짜를 준비했습니다. 그러나 getdate()은 항상 현재 시간을 반환하므로 테스트 결과는 시간이 다를 수 있습니다.

getdate()이 반환 할 변경 방법이 없다고 생각합니까? 그러나 저장 프로 시저에서 getdate()을 가져 와서 일부 입력 매개 변수를 사용하는 대신 옵션이 아닙니다.

테스트 결과를 일정하게 만들기 위해 이러한 저장 프로 시저를 테스트하는 최상의 방법은 무엇입니까? 이 저장 프로 시저를 서버 날짜를 변경하거나 수정의 짧은 할 수없는 것처럼

+3

'get-date'를 호출하고 출력을 반환하는 커스텀 함수를 만들 수 있습니다; 테스트 할 때 함수의 정의를 재정 의하여 테스트 값을 반환 할 수 있습니까? – JohnLBevan

+1

John의 제안 이외에 다른 방법은 날짜를 proc에 전달하는 것뿐입니다. – DavidG

+1

저장 프로 시저를 단위 테스트하는 방법을 명확히 할 수 있습니까? 보통 이것이 통합 테스팅의 영역입니다. TSQLUnit, Microsoft의 SQL Server Data Tools 또는 다른 것과 같은 SQL 기반 프레임 워크를 사용하고 있습니까? – TrueWill

답변

0

가 보이는 : 절차가 오류없이 결과 집합을 반환하는 경우 이러한 제약에서

Changing the output of Getdate

, 당신은 확인할 수 있습니다. 프로 시저가 다른 테이블을 쿼리하면 현재 날짜를 기반으로 데이터를 테이블에 채우고 프로 시저를 호출하고 결과의 유효성을 검사 한 다음 다른 테이블에서 데이터를 제거 할 수 있습니다.

프로 시저가 실제로 고정되어 변경되지 않으면 자동화 된 테스트 비용이이 드문 경우의 값보다 클 수 있습니다. 수동으로 절차를 검증 할 수 있습니다 (QA).

+0

예, 더 나은 접근 방법에 호핑. 내 경우에는 @JohnLBevan이 언급 한 대체 함수와 링크가 당신이 제공하는 것이 가장 좋을 것입니다.이 경우에는 일정한 날이 아니기 때문에 테스트에서 날짜 산술을 도입하고 정말로 현재 날짜를 기반으로하고 싶지는 않습니다. :( – nahab