Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing ReSharper执行单元测试的控制顺序_Unit Testing_Resharper - Fatal编程技术网

Unit testing ReSharper执行单元测试的控制顺序

Unit testing ReSharper执行单元测试的控制顺序,unit-testing,resharper,Unit Testing,Resharper,有没有办法让ReSharper在项目中先执行一组特定的测试?我仍然需要并行执行,我不需要每个方法控制它,只需要每个类就可以了。如果这有什么不同,那么测试框架就是MSTest 我想这样做的原因是,一些测试工作在较低的级别,速度非常快,但其他测试工作在较高的级别,速度要慢得多。我希望首先运行快速测试,因为如果它们失败,那么我知道有问题,继续下去没有意义。然而,ReSharper目前首先运行我的慢速测试 编辑:对我来说,测试不是按字母顺序运行的(VS2010上的R#7.1)。我每个类有一个源文件。类中

有没有办法让ReSharper在项目中先执行一组特定的测试?我仍然需要并行执行,我不需要每个方法控制它,只需要每个类就可以了。如果这有什么不同,那么测试框架就是MSTest

我想这样做的原因是,一些测试工作在较低的级别,速度非常快,但其他测试工作在较高的级别,速度要慢得多。我希望首先运行快速测试,因为如果它们失败,那么我知道有问题,继续下去没有意义。然而,ReSharper目前首先运行我的慢速测试

编辑:对我来说,测试不是按字母顺序运行的(VS2010上的R#7.1)。我每个类有一个源文件。类中的测试似乎是按照方法在源代码中出现的顺序运行的,但我无法理解R#如何确定测试类的顺序。这就是我想要的,因为慢速和快速测试是在不同的班级中进行的。这也不是按字母顺序排列的,但每次跑步都是一致的


编辑2:好的,算出它(见答案)。

似乎测试执行是按字母顺序以…的形式进行的。。。。 因此,您可以更改名称空间/类名以匹配测试顺序。但我想这不是你的选择

另一个选项是在“单元测试会话”窗口中将测试添加到不同的测试会话中。将快速测试移到会话1,将慢速测试移到会话2。然后只运行所需的一个测试会话

没有选项将TestCategory添加到您的测试方法中(即:
[TestCategory(“Fast”),TestMethod]
[TestCategory(“Slow”),TestMethod]
),并在单元测试会话窗口中按类别对测试进行分组。这对测试顺序没有影响

我之所以要这样做,是因为有些测试的工作级别较低 而且速度非常快,但是其他的测试在更高的级别上工作,而且非常复杂 慢一点

我想提出两种方法:

将测试分为两个独立的项目。将“快速”测试放入

YourProject.Test.Unit

以及在中国的缓慢测试

YourProject.Test.Integration

集成测试通常是与其他组件(如网络、数据库、文件系统等)交互的测试,这可能会导致测试运行变慢。可能是您较慢的测试正在访问外部资源(我们不知道)


或者使用@thersch的建议,使用类别来标记较慢的测试。我会使用category方法,因为您的测试实际上都是单元测试,因此拆分它们是没有意义的。

这看起来有点像黑客,但我发现如果我从项目中删除带有慢速测试的文件并重新添加它们,它们就会最后运行。因此,R#似乎跟踪包含测试类的源文件的添加顺序,并按该顺序运行它们。(编辑.csproj文件以对文件重新排序没有效果,因此它似乎没有使用。)

或者,您可以创建一个测试,该测试按照您想要的顺序编排对其他测试的调用-因此此测试本身充当“会话”


右键单击解决方案资源管理器>添加>有序测试中的UnitTest项目

您无法从Resharper访问此有序测试,但它将显示在VS测试资源管理器中。将已排序的测试添加到特定的VS测试播放列表中,并从Resharper会话/会话中删除所涉及的测试


为了节省大量的样板文件,我通常将此技术与数据库添加>获取>编辑>删除测试结合使用,并使用带有[ClassCleanup]属性的清理方法,以便在其中一个测试失败时扫描测试插入的数据库。

谢谢,我可以更改名称空间和类名,但顺序对我来说不是字母顺序-请参阅编辑。测试会话的想法很好(+1),尽管这是我每次打开解决方案时都需要做的事情,但并不理想。谢谢。我不想分成两个项目,即使这样,我也不知道如何确保先运行更快的项目。这不会告诉你测试失败的地方。如果双击失败的测试
A_RunAllTests
,它将转到
Test1
Test2
,而不是实际的断言。
[TestMethod]
public void A_RunAllTests()
{
    Test1();
    Test2();
    .
    .

}