2010-04-26 3 views
10

저는 C# 인 새로운 세계를 사랑합니다. 저는 장난감 테스트를 시작하기 위해 몇 가지 단위 테스트를 작성하고 싶습니다.C# 단위 테스트 - 모의 DataContexts/LINQ -> SQL 클래스 생성

내 코드는 현재 DatabaseDataContext 개체 (* .dbml 파일)를 통해 데이터베이스를 사용하며이 개체의 모의를 만드는 가장 좋은 방법은 무엇입니까? 데이터베이스 LINQ -> SQL 코드를 생성하는 것이 얼마나 쉬운 지와 요청이 얼마나 일반적인 지 알아야 VS2010이 테스트에 도움이되는 기능을 내장하고 있기를 바랍니다.

나는 이것이 꺼져있어 수동으로 수행해야한다면 원하는 접근법을 가르쳐 주시겠습니까?

많은 감사,

개빈

+0

LINQ to SQL을 사용하여 효과적이고 성공적으로 테스트하는 방법을 보려면이 대답을보십시오. http://stackoverflow.com/questions/4128640/how-to-remove-unit-of-work-functionality-from-repositories- using-ioc/4132186 # 4132186 – Steven

답변

5

DataContext의 문제점은 조롱을 위해 설계되지 않았다는 것입니다.

unmockable을 조롱하기위한 무료 도구는 Moles from Pex (Pex moles?)입니다. TypeMock과 거의 같습니다.

3

내가 아는 가장 좋은 방법은이 객체의 인터페이스를 추출하고 모의 객체를 생성하는 것을 사용하는 것입니다, 그래서 당신이 linqtosql 또는 EF를 사용하는 경우는별로 중요하지 않습니다 데이터베이스와 대화하거나 데이터베이스와 대화 할 수 있습니다. 당신을 위해 유용 할 수 있습니다

+3

두 모델 모두 서로 호환되지 않는 모델을 생성하므로 EF 용 L2S 구현을 전환 할 수 없습니다. 누출 된 추상화가 새어 나옵니다. – Will

+1

@Will - 좋은 지적. –

0

몇 가지 :

MOQ는 ("모의 - 당신"하거나 "모의"로 발음)에 대한 유일한 조롱 라이브러리 입니다 .NET은 처음부터 으로 개발되었습니다. .NET 3.5 (즉, Linq 표현식 트리)와 C# 3.0 기능 (예 : 람다 식 표현)을 최대한 활용합니다 은 가장 생산성이 높으며 유형 안전 및 리팩터링 친화적 인 조롱 라이브러리를 사용할 수 있습니다. 그리고 은 조롱 인터페이스와 클래스를 지원합니다. API는 매우 간단하며 이며 사전 지식이 필요없고 조롱 개념을 경험하지 않아도됩니다. LINQ :

LINQPad는 당신에게 현대 쿼리 언어에서 대화 형으로 쿼리 데이터베이스를 할 수 있습니다. SQL Management에 작별 인사하기 Studio! 와 MySQL Enterprise Server를 SQLite에하는

LINQ 객체에 LINQ XML WCF 데이터 서비스에 SQL 및 법인 프레임 워크 LINQ에 & SQL 애저 LINQ :

LINQPad는 C# 3.0 및 프레임 워크 3.5 등 모든 것을 지원 Mindscape LightSpeed ​​ORM (심지어 구식의 SQL!)

1

[면책 조항 : 나는 Typemock에서 일] :

var fakeContext = Isolate.Fake.Instance<DatabaseDataContext>(); 

이 봐

당신은 가짜 객체를 생성하고 당신이 필요로 반환하는 방법의 설정 Typemock Isolator을 사용할 수 있습니다 이 블로그 포스트에서 Linq2Sql을 가짜로 만드는 방법 : Faking LINQ to SQL DataContext Tables with Isolator