2014-02-21 20 views
1

我想写一个自动回归测试,我的服务开始了,我可以断言我的客户端可以从服务中检索一些东西。为客户编写一个wcf服务的回归测试

Private Blah proxy; 

    [SetUp] 
    public void SetUp() 
    { 
     proxy= new Blah(); 
    } 

    [Test] 
    public void GetStuff() 
    { 
     var result = proxy.GetStuff(); 
     Assert.NotNull(result); 
    } 

这不起作用,因为我的服务没有运行。如何在测试前开始我的服务?

回答

3

对于WCF服务的集成/验收测试,我建议您使用Self Hosted WCF服务。例如,你可以在这里找到:

创建于灯具安装自托管服务,并关闭它在夹具推倒:

EndpointAddress address = new EndpointAddress("http://localhost:8080/service1"); 
ServiceHost host;   
IService1 service; 

[TestFixtureSetUp] 
public void FixtureSetUp() 
{    
    var binding = new BasicHttpBinding(); 
    host = new ServiceHost(typeof(Service1), address.Uri); 
    host.AddServiceEndpoint(typeof(IService1), binding, address.Uri); 
    host.Open(); 
} 

[TestFixtureTearDown] 
public void FixtureTearDown() 
{ 
    if (host == null) 
     return; 

    if (host.State == CommunicationState.Opened) 
     host.Close(); 
    else if (host.State == CommunicationState.Faulted) 
     host.Abort(); 
} 

随着服务托管你可以得到服务代理:

var binding = new BasicHttpBinding(); 
ChannelFactory<IService1> factory = 
    new ChannelFactory<IService1>(binding, address); 
service = factory.CreateChannel(); 

而你的测试看起来像:

[Test] 
public void ShouldReturnSomeStuff() 
{ 
    var result = service.GetStuff(); 
    Assert.NotNull(result); 
}