代理和工作线程之间的区别

Difference between agents and worker threads

我正在使用 Jenkins 开发 运行ning NUnit 控制台 运行ners。这些测试连接到 Selenium 网格(也是 Jenkins 运行),所以我想限制它们的并行级别,以避免代理在等待网格上的空闲节点时挨饿。

到目前为止,我还没有搞清楚 NUnit 中 agentworker thread 之间到底有什么区别...我怀疑代理可以管理线程,但它只是一个猜想。谢谢:)

代理是一个单独的进程运行对程序集进行测试。工作者是进程中的一个线程,运行对特定程序集进行测试。

理论上,一个代理进程可以有多个应用程序域,每个域可以有多个程序集,每个程序集可以有多个工作线程。

然而,实际上,通常的做法是每个程序集有一个进程,这样就不需要多个域,每个进程将 运行 一些指定数量的工作线程 运行 测试程序集。在某些情况下,您可能更喜欢仅 运行 并行处理并且在程序集中没有任何并行性 - 这是最有可能在不对测试进行任何更改的情况下工作的方法,您可能没有设计并行性记住了。

代理没有 "manage" 线程。它们只是 运行 进程中的框架,框架根据您应用的属性决定使用多少线程。

使用多个代理是 唯一 并行 运行 nunit V2 测试的方法,因为 v2 框架不知道并行性。