2010-08-16 4 views
2

나는 지금까지 따르지 않았고 몇 가지 질문이있는 단위 테스트에 대한 의견을 많이 읽었습니다.환경을 변경하는 코드로 단위 테스트를 수행하는 실용적인 방법

단위 테스트의 기본 사항은 코드에서 일부 프로 시저를 실행하고 반환 된 값을 예상 값과 비교하여 일치 여부가 테스트 통과 여부를 확인하는 것입니다.

필자가 본 간단한 예제에서는 정수 나 소수 값을 테스트하는 테스트 만 했으므로 실제로 테스트하기가 매우 쉽습니다. 모든 것이 메모리에서 발생하기 때문에 발생합니다.

이제 파일에 쓰거나 SQL Server 데이터베이스에 레코드를 삽입하는 절차가 있다고 가정 해 보겠습니다 ... 테스트를 실행할 때마다 필자의 파일이나 서버를 테스트하고 여러 번 테스트를 실행하면 이전 테스트에서 레코드가 이미 삽입 된 경우 기본 키 위반과 같은 문제가 발생할 수 있습니다.

테스트 서버에서 테스트를 수행해야한다는 것을 알고 있지만 많은 경우에도 테스트를 실행할 때마다 데이터베이스를 복원하는 등의 실용적인 유지 관리가 필요합니다. 장기적으로 소비.

간단히 말해서, 정규 단위 테스트 개발자가 이러한 종류의 테스트를 관리하고 환경 상태를 쉽고 시간 효율적이며 직접적인 방법으로 수정하는 방법을 알고 싶습니다.

감사합니다.

나는 주로 C#으로 코딩 및 VS 2008을 사용하지만, 나는 당신이 Mocking frameworks에보고해야 할 매우 일반적인 질문

답변

3

단위 테스트는 코드를 개별적으로 테스트하는 것을 말하며 참조하는 테스트는 통합 테스트 또는 빌드 확인 테스트입니다.

데이터베이스 나 스트림을 사용하는 코드 조각에 대한 단위 테스트를 작성할 때 일반적으로 모의 프레임 워크 (moq는 항상 제안하는 것임) 또는 코드를 개별적으로 테스트하는 데 초점을 맞춘 다양한 기법을 사용합니다.

4

추측하고있다.

이렇게하면 데이터베이스에 쓰는 것처럼 테스트 을 설정할 수 있지만 실제로 변경하지는 않습니다. mock 객체가 값을 리턴하는 한 실제 코드가 인 것처럼 데이터베이스 연결이 아닌 코드를 테스트하고 있습니다. 테스트가 유효합니다.

유효한 개체와 잘못된 개체를 테스트하기 위해 mock 개체를 설정할 수 있으며 데이터베이스 연결이 끊어지는 것을 시뮬레이션 할 수도 있습니다.

+0

좋은, 쉬운 것들에 대한 제안, 너무 오래 배우지 않는 것이 좋습니다? –

+1

@Kharlos Dominguez : 람다 표현식에 익숙하다면 Moq은 매우 간단합니다. 테스트 프로젝트를 참조하고 사용법을 추가하는 단일 DLL입니다. 사용법을 요약 한 퀵 스타트 (http : // code)가 있습니다. google.com/p/moq/wiki/QuickStart –

관련 문제