使用NUnit进行功能测试并保证执行顺序和线程

使用NUnit进行功能测试并保证执行顺序和线程,nunit,nunit-3.0,Nunit,Nunit 3.0,我在NUnit讨论上问了这个问题,但我意识到这个小组不是很活跃,所以我在这里尝试一下: 到目前为止,我们一直在使用MSTests进行一些功能测试。 我知道,MSTest和NUnit都不是真正用于功能测试的,但我们需要在visualstudio中进行简单集成的测试 这些测试将启动其他可执行文件、连接、执行任务、断开连接并终止进程 我们在MSTest中遇到了问题,因为它在一个单独的线程中启动了测试,并且似乎有些测试之间的执行是重叠的,即使是按顺序执行 所以我想搬到努尼特 我的问题是: NUnit能否

我在NUnit讨论上问了这个问题,但我意识到这个小组不是很活跃,所以我在这里尝试一下:

到目前为止,我们一直在使用MSTests进行一些功能测试。 我知道,MSTest和NUnit都不是真正用于功能测试的,但我们需要在visualstudio中进行简单集成的测试

这些测试将启动其他可执行文件、连接、执行任务、断开连接并终止进程

我们在MSTest中遇到了问题,因为它在一个单独的线程中启动了测试,并且似乎有些测试之间的执行是重叠的,即使是按顺序执行

所以我想搬到努尼特

我的问题是:

NUnit能否以任何方式进行配置,以提供以下保证:

  • 测试将按可指定的顺序顺序顺序执行
  • 测试将从同一线程执行
  • 在调用后续测试的设置代码之前,将完全执行一个测试的拆卸代码
如果是这样的话,如果有任何特殊的配置,该配置是什么?
谢谢。

默认情况下,NUnit不会并行执行任何测试。如果您从未使用过
ParallelizableAttribute
,那么您的测试将一次运行一个

当然,这并不意味着您的测试不能中断NUnit,例如,启动一个在测试线程终止后从未终止的线程或进程。NUnit只对自己运行的测试负责

NUnit不保证所有测试都将从同一线程执行。当然,这与并行化是不同的。根据您指定的属性,可以为每个线程启动单独的线程。例如,您可以指定一些测试在单线程单元中运行,而其他测试默认在MTA中运行。您可以使用
requiresthread属性
,该属性要求NUnit为其修饰的测试使用新线程。您可以在类上使用
SingleThreadedAttribute
,以指示该类中的所有代码都在同一线程上运行

一个技巧是在nunit3控制台的命令行上指定--workers=0,这一技巧目前可用,但在将来的所有版本中可能不存在。这告诉NUnit只需运行测试,而无需创建任何测试工作程序,并给出了与NUnit V2更为相似的执行路径


因此,总的来说,我认为您的需求可以得到满足,但可能需要对您的测试进行一些修改,以使其按您希望的方式工作。

谢谢!另一个问题:如果在(一次性)安装过程中引发异常,是否会调用(一次性)拆卸?