我正在尝试将 MSBuild 中正在运行的 Fitnesse 测试集成到 TFS 上的夜间构建中。

为了使其自包含,我想仅在健身需要时才启动 seleniumRC 服务器。

我看到有一个“命令行装置”,但它是用 java 编写的,我可以使用它吗?

有帮助吗?

解决方案

我想你也许可以。您可以使用 MSBuild 轻松调用任何进程 任务。然而,这样做的问题是 exec 任务将等待 Selinium 进程完成后再继续,这不是您想要的行为。您想要运行该进程,在构建期间保持其运行,然后在构建完成时将其拆除。

因此,我认为您可能需要创建一个自定义 MSBuild 任务来执行此操作。请参阅以下帖子,了解某人创建的任务示例,该任务将异步运行,将控制权返回给构建脚本:

http://blog.eleutian.com/2007/03/01/AsyncExecMsBuildTask.aspx

对于从 MSBuild 调用 Java 程序(但在本例中是同步的)的示例,请查看我的任务,该任务调用 来自 MSBuild 的 Ant 这里

http://teamrise.com/products/build/

作为 MSBuild 任务的一部分,您需要将创建的进程 ID 输出到输出属性,以便在构建脚本结束时您可以调用另一个终止该进程的自定义 MSBuild 任务。它可以通过在 MSBuild 中查找作为变量传入的进程 ID 然后调用来完成此操作 进程终止 方法即

Process process = Process.GetProcessById(ProcessId);
process.Kill();

也就是说,您需要小心确保您的终止任务始终在 MSBuild 中执行,方法是确保它包含在构建中的错误路径等期间。您可以通过让 selenium RC 启动任务查找其他 seleniumRC 进程并在启动新进程之前杀死它们来使事情变得更有弹性 - 这样,如果进程由于某种原因没有正确关闭,它只会运行到下一个构建。

不管怎样 - 我的回答听起来像是很多工作,所以希望其他人能想出一个更简单的方法。您也许可以在 FitNesse 测试的测试套件启动中创建 seleniumRC 进程,并在套件拆卸中终止它,或者您可以编写一个自定义任务来扩展您的 FitNesse 运行程序任务并在之前异步启动 seleniumRC运行测试进程,然后终止它。

祝你好运,

马丁.

其他提示

感谢您的回复!

到目前为止我就是这样做的。

我制作了一个合适的固定装置(非常简单),它使用提供的命令行启动一个进程,在我的例子中是 startSelenium.bat。该装置返回 ProcessID,以便我可以将其存储在 Fitnesse 上下文中并稍后关闭该会话。

我现在可以在我的健身测试中创建一个 SuiteSetUp 页面,如下所示。

|运行命令夹具|

|命令行|运行命令?|

|C:\Projects...\startSeleniumRC.bat|>>seleniumprocess|

和这样的 SuiteTearDown

|运行命令夹具|

| ProcessID | stopcommand?| |

这对我行得通。根据我的健身测试的要求,没有硒 RC 启动。

编写一个简单的 .NET 应用程序来执行由构建脚本运行的 Process.Start("selenumRC commandline") 怎么样?

如果你不是走得太远的 Selenium 路线;我可以建议您查看类似的 .NET 浏览器自动化工具吗?特别是 WatiN 或 ArtOfTest。其中的“堆栈”完全是.NET,因此让它们在不同的机器上运行要容易得多。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top