2009-09-03 5 views
5

Assembly 클래스를 조롱 할 수 있습니까?어떻게 조립품을 조롱 할 수 있습니까?

그렇다면 어떤 프레임 워크를 사용합니까?

그렇다면 Assembly을 사용하는 코드에 대한 테스트 작성 방법은 무엇입니까?

+9

그것은 "당신의 어머니는 햄스터, 그리고 당신의 아버지가 eldeberries의 냄새"에게? – patros

+0

@patros : 이해하는 데 시간이 좀 걸렸습니다 ... –

+0

@Martinho Fernandes : Rhino에 대한 예제를 추가했습니다. –

답변

9

TypeMock은 매우 강력합니다. 나는 그것이 그것을 할 수 있다고 생각한다. Moq 또는 Rhino와 같은 다른 모의 프레임 워크의 경우 다른 전략을 사용해야합니다. 코뿔소 또는 MOQ에 대한

전략 : 예를 당

: 당신은 어셈블리 이름을 얻기 위해 Asssembly 클래스를 사용하고 있습니다.

public class YourClass 
{ 
    public string GetFullName() 
    { 
     Assembly ass = Assembly.GetExecutingAssembly(); 
     return ass.FullName; 
    } 
} 

총회 인터페이스 _Assembly에서 파생 된 클래스입니다. 따라서 조립품을 직접 사용하는 대신 인터페이스를 삽입 할 수 있습니다. 그런 다음 테스트를 위해 인터페이스를 모의하기가 쉽습니다.

수정 된 클래스 : 테스트에서

public class YourClass 
{ 
    private _Assembly _assbl; 
    public YourClass(_Assembly assbl) 
    { 
     _assbl = assbl; 
    } 

    public string GetFullName() 
    { 
     return _assbl.FullName; 
    } 
} 

, 당신은 _Assembly을 조롱 :

public void TestDoSomething() 
{ 
    var assbl = MockRepository.GenerateStub<_Assembly>(); 

    YourClass yc = new YourClass(assbl); 
    string fullName = yc.GetFullName(); 

    //Test conditions 
} 
+0

있습니다. Moq 또는 Rhino와 같은 "전통적인"mock 프레임 워크에서 어떻게 수행 할 수 있는지 설명 할 수 있습니까? –

+1

아,이 "숨겨진"_Assembly 인터페이스에 대해 알지 못했습니다. 감사. 내가 그랬다면 나는 그 질문을하지 않았을 것이다. Assembly가이 인터페이스를 구현하지 않았다면 (IAssembly') 자신을 생성하고 구현 한 래퍼를 작성하여 Assembly 구현을 사용할 수 있었겠습니까? 맞습니까? –

+1

@ Martinho : 맞습니다. –

관련 문제