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
C# 我怎样才能得到重新竖琴的理由';什么是中止的测试?_C#_Unit Testing_Nunit_Resharper - Fatal编程技术网

C# 我怎样才能得到重新竖琴的理由';什么是中止的测试?

C# 我怎样才能得到重新竖琴的理由';什么是中止的测试?,c#,unit-testing,nunit,resharper,C#,Unit Testing,Nunit,Resharper,我正在使用Resharper 9.2和NUnit 2.6.4以及~120个单元测试。有时,当我开始运行测试时,resharper会在随机测试时停止,并将其状态设置为“已中止”,并跳过其他测试。这非常不方便,因为我已经手动运行了其余的测试。 有什么方法可以找到流产的原因,一些resharper测试运行日志或者NUnit中的一些东西来帮助解决我的问题吗 我还尝试使用本机NUnit runner,但它有时会抛出不包含任何有用信息的异常(某些远程处理异常没有告诉任何有用信息) 我尝试设置“并行运行最多1

我正在使用Resharper 9.2和NUnit 2.6.4以及~120个单元测试。有时,当我开始运行测试时,resharper会在随机测试时停止,并将其状态设置为“已中止”,并跳过其他测试。这非常不方便,因为我已经手动运行了其余的测试。 有什么方法可以找到流产的原因,一些resharper测试运行日志或者NUnit中的一些东西来帮助解决我的问题吗

我还尝试使用本机NUnit runner,但它有时会抛出不包含任何有用信息的异常(某些远程处理异常没有告诉任何有用信息)

我尝试设置“并行运行最多1个程序集”和“对每个程序集使用单独的AppDomain进行测试”,但没有帮助

UPD

我在调试模式下复制了这一点,调试单元测试刚刚关闭,在输出窗口中我发现:

The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Program Trace' has exited with code 0 (0x0).
The program '[4572] JetBrains.ReSharper.TaskRunner.CLR4.exe: Managed (v4.0.30319)' has exited with code -1073741819 (0xc0000005) 'Access violation'.

问题似乎是external的库不安全代码。

在这种情况下,似乎resharper与此无关。我遇到了访问冲突错误,在这种情况下,测试程序进程将被关闭。在.net中无法处理此错误,因为它不在托管级别。如果错误消息类似于:“程序'[4572]JetBrains.ReSharper.TaskRunner.CLR4.exe:Managed(v4.0.30319)'已退出,代码为-1073741819(0xc0000005)'访问冲突'”,则只需在输出窗口中进行检查。 如果您可以访问本机代码,则可以进行调试


在我的例子中,问题在于COM对象和Dispose()方法的使用不当。我已经修好了,现在一切都好了——没有“无声”堕胎

我还遇到了一个案例,Resharper决定一贯中止测试。它并没有引起混乱或任何反常的事情

答案是它有一个无意的递归调用,导致了stackoverflow异常。当我决定“调试”而不是“运行”它们时,这一点很明显


因此,我假设一般的结论是“中止”测试是出现问题的征兆,但该错误并没有导致从代码本身抛出异常,而是从CLR或其他方面抛出异常。

我只有一个测试基本上没有运行任何代码,只是设置了一个整数值。我刚刚添加了我的第一个测试来设置单元测试,所以我很快添加了setup()和create()测试

每次运行时,我都会遇到测试中止错误。

调试失败

调试断点甚至不会在[Setup]TestSetup()方法内停止

我删除了TestSetup()和[Test]void Create()方法,它将运行,但结果当然是不确定的

我重新添加了[SetUp]TestSetup()方法,它也没有中止。我再次添加了[Test]void Create()方法,它再次开始中止,无法中断

最后,我看到了问题所在。你看到问题了吗

[SetUp]    
public void TestSetup()
{
    string test = "this thing";
}

[Test]
void Create()
{
    int x = 5;
    string s1 = "super";
}
扰流板


哎呀,我忘了将Create()方法设置为public。

试着调试本机代码,或者只是添加日志记录。在搜索google几个小时后,这就是我的解决方案。好极了!我调试了测试,并在本机代码中看到一个FatalExecutionEngineError,它没有堆栈跟踪,因此Resharpers没有错误消息。现在我知道它是什么了,我能修好它!调试而不是运行是关键。这很简单,我想踢自己。