2011-10-28 3 views
5

WCF 서비스를 만들고 메서드 중 하나를 테스트하려고했습니다. WCF 서비스 메서드를 마우스 오른쪽 단추로 클릭하고 단위 테스트 만들기를 선택했습니다.단위 테스트 WCF 메서드

새로운 테스트 프로젝트를 만들고 단위 테스트를 만들었습니다.

테스트 프로젝트를 실행하려고했지만 UrlToTest 값이 무엇인지 확실하지 않습니다. 나는 서비스에 URL을 썼다.

[TestMethod()] 
[HostType("ASP.NET")] 
[AspNetDevelopmentServerHost("C:\\VS Projects\\NetBranch4\\" + 
    "MobileCheckCapture\\MobileCheckCapture", "/")] 
// [UrlToTest("http://localhost:45651/")] 
[UrlToTest("http://localhost/mobilecc/mobilecc.svc")] 
public void AuthenticateUserTest() 
{ 
    // TODO: Initialize to an appropriate value 
    MobileCC target = new MobileCC(); 

    // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; 

    // TODO: Initialize to an appropriate value 
    string expected = string.Empty; 
    string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

답변

3

HOSTTYPE, AspNetDevelopmentServerHost 및 UrlToTest는 ASP.NET 유닛 테스트하지 WCF 위해 사용되는 파라미터이다. 이러한 속성에 주석을 달고 입력 매개 변수를 설정하고 테스트를 실행하십시오.

[TestMethod()] 
public void AuthenticateUserTest() 
{  
    MobileCC target = new MobileCC(); // TODO: Initialize to an appropriate value 
    string authenticateRequest = string.Empty; // TODO: Initialize to an appropriate value 
    string expected = string.Empty; // TODO: Initialize to an appropriate value  string actual; 
    actual = target.AuthenticateUser(authenticateRequest); 
    Assert.AreEqual(expected, actual); 
    Assert.Inconclusive("Verify the correctness of this test method."); 
} 

희망이 있습니다.

+0

는 지금 작동 감사하지만 실제 = 대상에 브레이크 포인트를 뒀다 : 로컬 IIS에 당신에게 SVC를 호스팅하는 경우

, 시험 방법의 코드는 유사합니다 .AuthenticateUser (authenticateRequest); 그것은 깨지 않고 wcf 메서드를 디버그하자 – user228777

+0

VS 메뉴에서 테스트 이동 "현재 컨텍스트에서 디버그 -> 테스트"선택하십시오. VS의 Test Tools 도구 모음에서 Test를 실행하기위한 옵션도 있습니다. –

+0

디버그 메뉴의 현재 컨텍스트에서 테스트 옵션이 표시되지 않습니다. 옵션을 설정해야합니까? Thanks – user228777

4

VS 빌드를 사용하는 대신 자신의 테스트를 직접 수행하는 것이 좋습니다. 테스트가 정상적인 클래스 인 것처럼 서비스를 새로 시작하고 함수를 호출하고 예상 한 값에 대해 주장하십시오. 모든 WCF 서비스는 정상적인 클래스처럼 테스트됩니다. 실제로 서비스에 연결하고 엔드 포인트가 올바른지 확인하고 연결하는 것이 실제로 서비스의 로직을 테스트하는 것과 관련이 없기 때문에 응답을 얻는 것은 통합 테스트 이상의 기능입니다.

ETA : 연결 문제, 방화벽 문제 등으로 인해 WCF 서비스로 해결할 수있는 시간이 많이 걸리기 때문에 논리를 먼저 테스트하고 마지막으로 테스트를 예약합니다.

0

웹 서비스에 대한 테스트 메소드를 성공적으로 실행하려면 [HostType("ASP.NET")] 속성을 제거해야합니다. 또한 UrlToTest에는 SVC 파일이 아닌 웹 응용 프로그램에 대한 URL 만 포함되어야합니다. 또한 일부 특정 경우에만 테스트 방법에 AspNetDevelopmentServer이 필요합니다.

[TestMethod()] 
[UrlToTest("http://localhost/ServiceApp")] 
public void ServiceTest() 
{ 
    WcfService target = new WcfService(); 
    string arg = "test"; 
    Response actual = target.DoSmth(arg); 

    Assert.IsTrue(actual != null); 
}