Visual Studio将配置值传递给单元测试

时间:2011-01-10 19:01:05

标签: visual-studio-2010 unit-testing mstest

我正在使用MSTest(Visual Studio)单元测试来运行Selenium来测试网站的功能。我想要做的是能够将一些配置变量传递给我的测试。比如,服务器地址,Selenium浏览器类型等等。我一直在尝试使用TestContext,但除了使用LoadTests传递此信息之外,似乎没有任何其他方法。

我也试过使用Spring.NET,但这似乎也没有帮助。

有关使用TestContext的任何想法?或者别的什么。

由于

1 个答案:

答案 0 :(得分:1)

我以为我会分享我最后做的事情。我使用Spring.net将设置注入到像这样的SeleniumSettings类中;

<objects xmlns="http://www.springframework.net" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://www.springframework.net http://www.springframework.net/xsd/spring-objects.xsd" >
  <object id="Settings" type="Sample.SeleniumSettings, Sample" singleton="true">
    <property name="Server" value="localhost"/>
    <property name="Port" value="4444"/>
    <property name="Browser" value="*firefox" />
    <property name="Url" value="http://website.com"/>
    <property name="Email" value="sample@website.com"/>
  </object>
</objects>

这会将SeleniumSettings注入Test类中名为Settings的Property。测试需要继承自AbstractDependencyInjectionSpringContextTests,并实现;

protected override string[] ConfigLocations 

设置类看起来像这样;

public class SeleniumSettings
{
    public const string DefaultEmailAddress = "sample@website.com";
    public const string DefaultServerAddress = "localhost";
    public const string DefaultProtocol = "http://";
    public const string DefaultEndPoint = "/";

    public string Server = DefaultServerAddress;
    public int Port = 4444;
    public string Browser = "*firefox";
    public string Url = "http://localhost";
    public string Email = DefaultEmailAddress;

    public ISelenium factory()
    {
        return new DefaultSelenium(Server, Port, Browser, Url);
    }
}

然后使用SeleniumSettings.factory()获取DefaultSelenium对象以运行测试。

Selenium文档有一些关于此的信息,但是它太快地潜入,并且跳过了设置这些内容所需的基本信息。

我最初尝试将DefaultSelenium对象注入到类中,但是我遇到了Selenium内部崩溃的问题。它似乎不喜欢由Spring.net注入创建。

我希望这有助于某人。