如何解决确保服务连接性
| 我打算设置一个非常简单的NUnit测试,以仅测试WCF服务是否已启动并正在运行。 所以我有http://abc-efg/xyz.svc
现在,我需要编写一个单元测试以连接到该URI,如果它可以正常工作,则只需记录成功,如果失败则将失败和异常/错误记录在文件中。无需单独托管等。
调用并实现此目标的理想方法论和方法是什么?
解决方法
这就是我们在连接到WCF服务器的测试中使用的东西。我们没有明确测试服务器是否已启动,但是显然如果服务器没有启动,则会出现错误:
[Test]
public void TestServerIsUp()
{
var factory = new ChannelFactory<IMyServiceInterface> (configSectionName);
factory.Open ();
return factory.CreateChannel ();
}
如果在配置中指定的端点上没有侦听端点,则您将获得异常和失败的测试。
您可以使用ChannelFactory构造函数的其他重载之一来传递固定的绑定和端点地址,而不是根据需要使用config。
, 不确定这是否理想,但是如果我理解您的问题,您实际上是在寻找集成测试以确保某个URI可用。您并不是真正想对服务的实现进行单元测试-您想向URI发出请求并检查响应。
这是我为此设置的NUnitTestFixture
。请注意,这是很快整合在一起的,绝对可以改进。
我使用WebRequest对象发出请求并获得响应。发出请求时,它被包裹在一个ѭ3中,因为如果该请求返回除200类型的响应之外的任何内容,它将抛出WebException。因此,我捕获了异常,并从异常的Response
属性中获取了WebResponse
对象。我在此时设置了StatusCode
变量,并继续评估返回值。
希望这会有所帮助。如果我误解了您的问题,请告诉我,我会相应地进行更新。祝好运!
测试代码:
[TestFixture]
public class WebRequestTests : AssertionHelper
{
[TestCase(\"http://www.cnn.com\",200)]
[TestCase(\"http://www.foobar.com\",403)]
[TestCase(\"http://www.cnn.com/xyz.htm\",404)]
public void when_i_request_a_url_i_should_get_the_appropriate_response_statuscode_returned(string url,int expectedStatusCode)
{
var webReq = (HttpWebRequest)WebRequest.Create(url);
webReq.Method = \"GET\";
HttpWebResponse webResp;
try
{
webResp = (HttpWebResponse)webReq.GetResponse();
//log a success in a file
}
catch (WebException wexc)
{
webResp = (HttpWebResponse)wexc.Response;
//log the wexc.Status and other properties that you want in a file
}
HttpStatusCode statusCode = webResp.StatusCode;
var answer = webResp.GetResponseStream();
var result = string.Empty;
if (answer != null)
{
using (var tempStream = new StreamReader(answer))
{
result = tempStream.ReadToEnd();
}
}
Expect(result.Length,Is.GreaterThan(0),\"result was empty\");
Expect(((int)statusCode),Is.EqualTo(expectedStatusCode),\"status code not correct\");
}
}
, 您可以使用Visual Studio中的单元测试功能来执行此操作。这是一个例子
http://blog.gfader.com/2010/08/how-to-unit-test-wcf-service.html
, 使用Nunit的WCF和单元测试示例
这也是一个类似的问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。