Windows Server 2008 R2上的SpecFlow + WatiN + NUnit + TeamCity

Ale*_*ina 7 teamcity nunit watin specflow

我最近在设置完全自动化的夜间构建/测试/部署环境时遇到了一些麻烦.简要解释一下设置.我们使用Mercurial作为源控制系统,使用TeamCity作为构建服务器.它目前在一台单独的机器上只有一个构建代理,以保持简单.

这个想法如下:每晚都有一个TeamCity构建运行.从Mercurial存储库中提取最新信息,运行构建,运行单元测试,部署到测试服务器,针对新部署的测试服务器运行验收测试(在构建代理上),如果所有这些通过将批次部署到临时服务器.除了验收测试之外,我已经完成了所有工作.这些都是使用SpecFlow和WatiN完成的.Everyhting在开发机器上运行良好(Windows 7 32位).但是,当我尝试运行验收测试(TeamCity中的NUnit)时,运行器报告失败,因为步骤[浏览器] .ContainsText(browserText).所有步骤都正确运行,如果我在构建代理上的同一浏览器中复制步骤(获得完全管理员访问权限),我可以看到文本存在.所以据我所知,测试应该通过.

我发现这个stackoverflow线程让我觉得我可能正在做一些关于如何保持浏览器实例的错误.解释一下:我有一套常见的步骤,例如"当我点击X按钮时"或"当我将文字X输入字段Y时"和有问题的那个"然后我显示X".因为我正在尽可能多地重复使用测试,所以我也推广了一个@requires_browser场景需求,然后定义如下:

[BeforeScenario("requires_browser")]
public void RequiresBrowserBeforeFeature()
{
    Settings.MakeNewIeInstanceVisible = false;
    ScenarioContext.Current.Set<Browser>(new IE(true));
}

[AfterScenario("requires_browser")]
public void RequiresBrowserAfterFeature()
{
    ScenarioContext.Current.Get<Browser>().Close();
    ScenarioContext.Current.Get<Browser>().Dispose();
}
Run Code Online (Sandbox Code Playgroud)

然后是共同的步骤:

[Then("I am shown \"(.*)\"")]
public void ThenIAmShown(string text)
{
    Assert.IsTrue(ScenarioContext.Current.Get<Browser>().ContainsText(text));
}
Run Code Online (Sandbox Code Playgroud)

从这里我可以定义其他常见步骤,将文本输入文本框,单击按钮等.所有这一切都完美适用于开发环境,在visual studio 2010中运行[以管理员身份].

我认为ScenarioContext应该保留到测试完成之前我错了吗?

到目前为止我尝试过的:

  1. 配置构建代理程序服务以作为本地系统(SYSTEM)运行.这导致了所描述的问题 - ThenIAmShown(字符串文本)方法将始终失败.它与已启用本地桌面的交互.

  2. 配置的构建代理服务以网络管理员身份运行(完全管理员权限).此设置甚至不会运行测试.我得到的例外:

    TearDown方法失败.WatiN.Core.Exceptions.BrowserNotFoundException:找不到匹配约束的IE窗口:等待附加到新创建的IE实例时超时.搜索在"30"秒后过期.TearDown:System.Collections.Generic.KeyNotFoundException:给定的键不在字典中.在WatiN.Core.IE.CreateIEPartallyInitializedInNewProcess()at WatiN.Core.IE.CreateNewIEAndGoToUri(Uri uri,IDialogHandler logonDialogHandler,Boolean createInNewProcess)...

  3. 已经将Interop.SHDocVw.dll和Microsoft.mshtml.dll组件添加到bin目录(在项目引用中复制到输出).

  4. 从构建代理运行NUnit UI.这按预期运行单元测试.让我相信可能存在安全问题.Windows Server 2008 R2 Enterprise上的Runnint NUnit 2.0.5.

有谁有这个问题?