2013-06-19 5 views
0

그래서 단위 테스트, 특히 웹 서비스 (SOAP 버전)로 다이빙을 시도하고 참조 된 중첩 클래스를 전달하기위한 적절한 형식을 얻는 데 엄청난 어려움을 겪고 있습니다. OtherClass.aNestedClass.단위 테스트 메서드에서 매개 변수로 중첩 클래스 전달 매개 변수로

아래에서 알 수 있듯이 OtherClass 및 aNestedClass 클래스는 모두 공개입니다. readDB 메소드는 단위 테스트의 대상 메소드입니다. 그러나 OtherClass의 인스턴스를 선언하려고 시도 할 때 ReadDB 메서드 호출을 너무 행복하게 만드는 OtherClass_Accessor 옵션 만 가져옵니다 (특히 '가장 좋은 오버로드 된 일치 ... 일부 잘못된 인수가 있음'오류가 발생 함) .

단위 테스트의 접근 자 메서드 호출에 대한 매개 변수로 클래스를 올바르게 전달하는 방법은 무엇입니까?

public class MyClass 
{ 
    public void readDB(ref OtherClass.aNestedClass oa) 
    { 
     oa.A = "abc"; 
     oa.B = "def"; 
    } 
} 

public class OtherClass 
{ 
    public class aNestedClass 
    { 
     public string A; 
     public string B; 
    } 
} 

내 샘플 시도 : readDB()에서

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("D:\\MyProject", "/MyProject")] 
[UrlToTest("http://localhost/MyProject/default.aspx")] 
public void readDBTest() 
{ 
    OtherClass_Accessor.aNestedClass oa = new OtherClass_Accessor.aNestedClass(); 

    readDB(ref oa); 

    // assert statements... 
} 
+0

나는 이것이 너무 많이 희망한다고 생각하지만 실제로는 중첩 된 클래스 여야합니까? 중첩 (Nesting)은 클래스 밖에서 사용할 수 없기 때문에 클래스 밖에서 사용하지 못하도록합니다. –

+0

불행히도 예, 이러한 웹 서비스의 원래 개발자는 웹 서비스 전체에서 다양한 비트의 데이터를 전달하기 위해 해당 구조를 사용했습니다. 그들은 아주 많이 묻혀 있습니다. –

답변

0

매개 변수는 type 아닌 매개 변수를 지정하는 것입니다. 이것을 시도하십시오 :

public class MyClass 
{ 
    public void readDB(ref OtherClass.aNestedClass myNestedClassInstance) 
    { 
     //do some DB reading, modify strings in class passed by ref. 
    } 
} 
+0

그건 내 잘못 이었어. 필자는 샘플 코드 구조에 변수 이름을 포함시키지 않았습니다. 원본 게시판을 편집하여이 내용을 해당 참조에서 참조되는 방법의 견본과 함께 편집했습니다. –