有没有办法通过 nunit 或 nunit-console 查看硒测试是否 运行?

Is there a way to see if a selenium test is being ran via nunit or nunit-console?

所以,我有合理数量的 Selenium 测试。我希望他们通过批处理脚本、nunit-console 和 RemoteWebDriver 在后台安静地 运行。我已经有了这个设置。我还希望能够 运行 使用 nunit 在 vi​​sual studio 2013 中与其他驱动程序进行相同的测试(与我一起观看、调试、编写新测试等...)。我已经设置好了。问题是我希望能够同时 运行 它们。

我正在考虑检查调用程序是 nunit 还是 nunit-console 以确定使用哪个驱动程序,但我有点不确定应该如何设置它。

我考虑过:

bool isConsole = Process.GetProcessesByName("nunit-console")
                .FirstOrDefault(p => p.MainModule.FileName.StartsWith(@"C:\Program Files (x86)\NUnit 2.6.4\bin")) != default(Process);

if (isConsole)
{ 
   // remote
}
else
{
   // ff,chrome,etc...
}

但是,这不允许我 运行 在后台安静地 运行 在视觉工作室中进行单独测试。

我不确定您在 运行 进行 selenium 测试时是否有任何不同,但是对于正常的 nunit 测试,您可以这样做:

if("nunit" == Process.GetCurrentProcess().ProcessName)) {
    ...
}

这会获取实际执行测试的进程的名称,而不仅仅是检查进程当前是否正在 运行ning 在机器上。

运行 从 visual studio 中,我得到进程名称 "vstest.executionengine.x86",从控制台,我得到 "nunit-console",从 gui 我得到 "nunit".

根据您运行在其下进行测试的进程模型,您可能需要检查父进程,而不是当前进程。将 Nunit 配置为 运行 在单独的进程中进行测试,报告的带有上述代码的进程名称为 "nunit-agent"。出于某种原因,目前我无法在这种模式下将 nunit-console 设置为 运行,所以我不知道它是否有不同的进程名称供您使用。

如果您确实需要跟踪进程调用堆栈以查看父进程是什么,this question.

上有一些关于如何执行此操作的优秀答案