Att*_*lah 5 .net c# tfs tfs2010
我一直在开发一个WCF项目,它将公开将由公司外部的客户端使用的Web服务(基于HTTP).我打算将TFS 2010用于持续集成.
我想做持续集成和集成测试.
我的问题是:
- 做集成测试意味着我必须创建一个模仿生产环境的测试环境吗?-OR这是否意味着我只需要从我的单元测试工具开始调用我的WCF,数据库和其他对象而不依赖于模拟?例如 :
[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();
}
Run Code Online (Sandbox Code Playgroud)
- 我真的不明白如何进行这项工作. - 有没有关于如何实现这一目标的真实.NET(WCF)项目的教程?
我不是如何使用模拟和其他内容正确分解单元测试的专家,但我可以分享我使用 WCF/数据库后端进行集成测试的经验。
基本上,我们使用单例来处理所有启动代码。换句话说,MyClassInitialize 方法将调用一个静态方法,以确保服务主机/数据库启动并运行。这样,我们就不必为每组单元测试设置/拆除后端。
[ClassInitialize]
public static void MyClassInitialize(TestContext testContext)
{
GlobalBackend.EnsureStarted();
}
Run Code Online (Sandbox Code Playgroud)
我不知道网上有任何例子,你可能需要做更多的谷歌搜索。
至于以什么粒度编写测试,您谈到了集成测试。听起来您可能想测试附加到真实数据库的服务调用。假设您的服务中融入了一些 CRUD 功能,一个单元测试(在此上下文中的集成测试)可能会创建一个小部件(或其他),然后执行 loadWidget 调用以确保正确创建小部件。
在一个单元测试中要做多少测试(取决于您是进行集成测试还是更细粒度的单元测试)是一个可以写满很多书的主题。
编辑:您可能还需要对数据库/服务进行一些清理/关闭:
有关AssemblyCleanup 属性的 MSDN 页面。
[AssemblyCleanup()]
public static void AssemblyCleanup()
{
GlobalBackend.ShutDown();
}
Run Code Online (Sandbox Code Playgroud)
当然,这可能导致将所有启动代码放入:
[AssemblyInitialize()]
public static void AssemblyInit(TestContext context)
{
GlobalBackend.EnsureStarted();
}
Run Code Online (Sandbox Code Playgroud)
所以现在我记得更清楚了 - 我们最终做到了这一点(更少的代码)
| 归档时间: |
|
| 查看次数: |
1691 次 |
| 最近记录: |