首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何对WCF项目进行集成测试?

如何对WCF项目进行集成测试?
EN

Stack Overflow用户
提问于 2011-02-09 05:19:59
回答 1查看 1.8K关注 0票数 5

我一直在开发一个WCF项目,它将公开web服务(基于HTTP),这些服务将被公司外部的客户使用。我计划使用TFS2010进行持续集成。

我想做持续集成和集成测试。

我的问题是:

-does做集成测试意味着我必须创建一个模拟生产环境的测试环境?-OR这是否意味着我只需从我的单元测试工具开始调用我的WCF、数据库和其他对象,而不依赖于mock?例如:

代码语言:javascript
运行
复制
[TestClass]
public class ServiceIntegrationTest
{
    private static ServiceHost serviceHost;

    [ClassInitialize]
    public static void MyClassInitialize(TestContext testContext)
    {
        serviceHost = new ServiceHost(typeof(Service1), new [] { new Uri("http://127.0.0.1:8001/") });
        serviceHost.AddServiceEndpoint(typeof(IService1), new BasicHttpBinding(), "Service1");
        serviceHost.Open();
    } 

-I真的不知道该怎么做。在现实世界的.NET (WCF)项目中,有没有关于如何实现这一点的教程?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2011-02-09 05:33:19

我不是如何使用mock和其他工具正确分解单元测试的专家,但我可以分享我在使用WCF /a数据库后端进行集成测试方面的经验。

基本上,我们使用一个单例来处理所有的启动代码。换句话说,MyClassInitialize方法将调用一个静态方法,该方法将确保服务主机/数据库已启动并正在运行。这样,我们就不必为每组单元测试设置/拆除后端。

代码语言:javascript
运行
复制
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext)
{
    GlobalBackend.EnsureStarted();
} 

我不知道网上有什么例子,你可能得再用谷歌搜索一下。

至于编写测试的粒度,您谈到了集成测试。这听起来像是您可能想要测试附加到真实数据库的服务调用。假设您的服务中包含一些CRUD功能,一个单元测试(此上下文中的集成测试)可能会创建一个小部件(或其他任何东西),然后执行一个loadWidget调用以确保小部件被正确创建。

在一次单元测试中要做多少测试(取决于您是在做集成测试还是更细粒度的单元测试)是一个可以填满很多书的主题。

编辑:您可能还需要对数据库/服务执行一些清理/关闭操作:

AssemblyCleanup attribute上的MSDN页面。

代码语言:javascript
运行
复制
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
   GlobalBackend.ShutDown();
}

当然,这可能会导致将所有启动代码放入:

代码语言:javascript
运行
复制
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
      GlobalBackend.EnsureStarted();
}

所以现在我记得更清楚了--我们最终做到了这一点(代码更少)。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/4938583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档