CruiseControl中使用NUnit中测试WEB服务

我的项目需要在CruiseControl中自动测试WEB服务,测试需满足下列条件:
* 不依赖于IIS
* 不对WebService做部署,直接在其CC编译的生成目录中运行WEB服务

如果满足以上需求,当然也可以使用相同方式在VS和CC里测试网页。

在网上找到了SCOTT的文章NUnit Unit Testing of ASP.NET Pages, Base Classes, Controls and other widgetry using Cassini (ASP.NET Web Matrix/Visual Studio Web Developer),使用Cassini来做果然方便。

自己写了个帮助类(见页尾),然后这样使用(在TestFixtureSetUp中运行Cassini,返回其服务地址给测试使用)
        [TestFixtureSetUp]
        
public void Init()
        
{
            _cassni 
= new CassiniHelper();
            _cassni.Start();
            
//你可如此获得Cassini运行起来的WEB服务地址
            
//config.CurrentServiceEntryUrl = _cassni.WebServerUrl;
        }


        [TestFixtureTearDown]
        
public void FixtureTearDown()
        
{
            _cassni.Close();
        }
  • CassiniHelper
        internal class CassiniHelper
        
    {
            
    private int _webServerPort = 26610;
            
    private Server _webServer;
            
    private readonly string _webServerVDir = "/ws";
            
    private string _workingPath;
            
    private string _webServerUrl;
            
    private string _abstractPathFromTestToWebService = @"..\..\..\WebService";

            
    public CassiniHelper()
            
    {
                SetWebServerUrl();
            }


            
    public int WebServerPort
            
    {
                
    get return _webServerPort; }
                
    set 
                

                    _webServerPort 
    = value;
                    SetWebServerUrl(); 
                }

            }


            
    public string WebServerUrl
            
    {
                
    get return _webServerUrl; }
                
    set { _webServerUrl = value; }
            }


            
    /// <summary>
            
    /// 从测试案例程序集所在目录到WEBServer所在目录的相对路径
            
    /// </summary>

            public string AbstractPathFromTestToWebService
            
    {
                
    get return _abstractPathFromTestToWebService; }
                
    set { _abstractPathFromTestToWebService = value; }
            }


            
    /// <summary>
            
    /// WEB服务的虚拟路径
            
    /// </summary>

            public string WebServerVDir
            
    {
                
    get return _webServerVDir; }
            }


            
    public void Start()
            
    {
                
    if(!Directory.Exists(_workingPath))
                    
    throw new DirectoryNotFoundException(_workingPath);

                _webServer 
    = new Server(_webServerPort, WebServerVDir, _workingPath);
                _webServer.Start();
            }


            
    public void Close()
            
    {
                
    try
                
    {
                    
    if (_webServer != null)
                    
    {
                        _webServer.Stop();
                        _webServer 
    = null;
                    }

                }

                
    catch { }
            }


            
    private void SetWebServerUrl()
            
    {
                
    string currentPath = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location);
                DirectoryInfo dinfo 
    = new DirectoryInfo(Path.Combine(currentPath, _abstractPathFromTestToWebService));
                _workingPath 
    = dinfo.FullName;

                
    //拷贝Cassini.dll到web服务的bin目录下
                string cassini = "Cassini.dll";
                File.Copy(Path.Combine(currentPath, cassini), Path.Combine(Path.Combine(_workingPath,
    "bin"),cassini));

                _webServerUrl 
    = String.Format("http://localhost:{0}{1}", _webServerPort, WebServerVDir);
            }

        }

 
Copyright, 251   zhangtao.it@gmail.com, itrust.cnblogs.com        
posted @ 2008-07-18 19:44 251 阅读(132) 评论(1)  编辑 收藏 网摘 所属分类: XP/CI

  回复  引用  查看    
#1楼 2008-12-03 11:42 | 东边日出      
呵呵,这个没看懂?

标题  
姓名  
主页
Email (博主才能看到) 
验证码 *  看不清,换一张 [登录][注册]
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2008-07-22 10:27 编辑过
Google站内搜索
[推荐职位]上海盛大网络招聘架构师



China-pub 计算机图书网上专卖店!6.5万品种 2-8折!
近千种 9-95 新二手计算图书火热销售中!
开发者征途系统新作:《设计模式——基于C#的工程化实现及扩展》

相关文章:

相关链接: