NAnt、MbUnit、CruiseControl、Selenium-将设置传递到测试组件

NAnt、MbUnit、CruiseControl、Selenium-将设置传递到测试组件,selenium,cruisecontrol.net,nant,mbunit,Selenium,Cruisecontrol.net,Nant,Mbunit,我正在为我们的自动化测试平台整理一些想法,并一直在寻找Selenium作为测试运行者 我正在将录制的Selenium C#脚本包装到一个MbUnit测试中,该测试通过MbUnit NAnt任务触发。Selenium测试客户端创建如下: selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/"); 如何将主机、端口和url设置传递到测试中,以便通过NAnt任务控制它们的值 例如,我可能有多个Selenium

我正在为我们的自动化测试平台整理一些想法,并一直在寻找Selenium作为测试运行者

我正在将录制的Selenium C#脚本包装到一个MbUnit测试中,该测试通过MbUnit NAnt任务触发。Selenium测试客户端创建如下:

selenium = new DefaultSelenium("host", 4444, "*iexplore", "http://[url]/");
如何将主机、端口和url设置传递到测试中,以便通过NAnt任务控制它们的值

例如,我可能有多个Selenium RC服务器在侦听,我希望使用相同的测试代码传入每个服务器地址,而不是将设置嵌入测试本身

我用自己编写的自定义NAnt任务模拟了一种方法,但这不是目前最优雅的解决方案,我想知道是否有更简单的方法来完成我想做的事情


非常感谢任何人的帮助。

每当我需要使用NAnt与外部实体集成时,我要么使用执行任务,要么编写自定义任务。考虑到你发布的信息,似乎写你自己的确实是一个很好的解决方案,但是你说你不满意。你能详细解释一下为什么你不认为你目前的解决方案是一个优雅的解决方案吗

更新 由于不了解内部细节,您似乎已经通过自定义任务很好地解决了这个问题。据我所知,我会这么做的


也许一个新的解决方案会及时显现出来,但现在,让自己轻松起来吧

对于MSBuild,我使用环境变量,在CC.NET配置中创建这些变量,然后它们将在脚本中可用。我想这对你也有用。

谢谢你迄今为止的回复

环境变量可以工作,但是,我们可以通过单个测试程序集运行并行测试,所以我不希望在执行过程中覆盖设置,这可能会破坏另一个测试。不过很有趣的想法,谢谢,我想我可以在其他领域使用它

我当前的解决方案涉及在MbUnit任务之上构建一个自定义NAnt任务,它允许我将其他主机、端口和url设置指定为属性。然后将它们保存为构建目录中的配置文件,然后由测试程序集读入。这让我觉得有点“笨拙”,因为我的测试需要从特定的类继承。还不错,但我希望减少依赖性,集中精力进行测试


也许我担心的太多了

我有一个用于所有测试夹具的基类,它具有以下设置代码:

    [FixtureSetUp]
    public virtual void TestFixtureSetup ()
    {
        BrowserType = (BrowserType) Enum.Parse (typeof (BrowserType),
            System.Configuration.ConfigurationManager.AppSettings["BrowserType"],
            true);
        testMachine = System.Configuration.ConfigurationManager.AppSettings["TestMachine"];
        seleniumPort = int.Parse (System.Configuration.ConfigurationManager.AppSettings["SeleniumPort"],
            System.Globalization.CultureInfo.InvariantCulture);
        seleniumSpeed = System.Configuration.ConfigurationManager.AppSettings["SeleniumSpeed"];
        browserUrl = System.Configuration.ConfigurationManager.AppSettings["BrowserUrl"];
        targetUrl = new Uri (System.Configuration.ConfigurationManager.AppSettings["TargetUrl"]);

        string browserExe;
        switch (BrowserType)
        {
            case BrowserType.InternetExplorer:
                browserExe = "*iexplore";
                break;
            case BrowserType.Firefox:
                browserExe = "*firefox";
                break;

            default:
                throw new NotSupportedException ();
        }

        selenium = new DefaultSelenium (testMachine, seleniumPort, browserExe, browserUrl);
        selenium.Start ();

        System.Console.WriteLine ("Started Selenium session (browser type={0})",
            browserType);

        // sets the speed of execution of GUI commands
        if (false == String.IsNullOrEmpty (seleniumSpeed))
            selenium.SetSpeed (seleniumSpeed);
    }
然后,我只需向测试运行程序提供一个配置。文件: