Nunit ExpectedException正常工作吗?

在设置一些命令行脚本来测试我正在处理的项目的NUnit测试套件时,我开始遇到问题。

我注意到在Visual StudioXamarin中运行测试时结果是我的预期,但是当使用nunit-console (mac v2.4.8 )从命令行运行时,它不会使某些测试失败。

在控制台中失败的所有失败的测试都使用[ExpectedException]属性(两者都有类型和一般)。 更改为使用Assert.Throws它在IDE和命令行中都能正常工作。

这是Nunit或我拥有的特定版本/平台的错误吗?

它是unit-console 2.4.8中的一个错误,并且与一个评论者建议的VS测试运行器无关。 我在cmd-line上使用3.x通过执行本地nuget安装来解决它,因为我将它添加到我的Makefile中并且可以进行’make test’。

通过2.4.8进行测试(并揭示错误/问题):

nunit-console -nologo -labels except.dll

 ***** except.Test.ExpectedException ***** except.Test.ExpectedNotSystemException ***** except.Test.ExpectedNotTypeOfSystemException ***** except.Test.NotExpectedException Tests run: 4, Failures: 1, Not run: 0, Time: 0.106 seconds Test Case Failures: 1) except.Test.NotExpectedException : System.Exception : Stackoverflow at except.Test.NotExpectedException () [0x00006] in /Users/sushi/code/XamTests/except/except/Test.cs:33 at (wrapper managed-to-native) System.Reflection.MonoMethod:InternalInvoke (System.Reflection.MonoMethod,object,object[],System.Exception&) at System.Reflection.MonoMethod.Invoke (System.Object obj, BindingFlags invokeAttr, System.Reflection.Binder binder, System.Object[] parameters, System.Globalization.CultureInfo culture) [0x00038] in /private/tmp/source-mono-mac-4.2.0-branch-c6sr1/bockbuild-mono-4.2.0-branch/profiles/mono-mac-xamarin/build-root/mono-4.2.2/mcs/class/corlib/System.Reflection/MonoMethod.cs:295 

本地3.0.1安装和测试(正常工作):

nuget安装nunit.runners

./NUnit.Console.3.0.1/tools/nunit3-console.exe except.dll

 NUnit Console Runner 3.0.5813 ~~~ Errors and Failures 1) Failed : except.Test One or more child tests had errors 2) Failed : except.Test.ExpectedNotSystemException An unexpected exception type was thrown 3) Failed : except.Test.ExpectedNotTypeOfSystemException An unexpected exception type was thrown 4) Error : except.Test.NotExpectedException Test Run Summary Overall result: Failed Tests run: 4, Passed: 1, Errors: 1, Failures: 2, Inconclusive: 0 Not run: 0, Invalid: 0, Ignored: 0, Explicit: 0, Skipped: 0 Start time: 2016-01-26 23:09:56Z End time: 2016-01-26 23:09:56Z Duration: 0.117 seconds 

测试用例:

 using NUnit.Framework; using System; namespace except { [TestFixture ()] public class Test { [Test ()] [ExpectedException] public void ExpectedException () { throw new Exception ("Stackoverflow"); } [Test ()] [ExpectedException("System.DivideByZeroException")] public void ExpectedNotSystemException () { throw new Exception ("Stackoverflow"); } [Test ()] [ExpectedException(typeof(DivideByZeroException))] public void ExpectedNotTypeOfSystemException () { throw new Exception ("Stackoverflow"); } [Test ()] public void NotExpectedException () { throw new Exception ("Stackoverflow"); } } }