Nunit 预期异常是否正常工作
本文关键字:工作 常工作 异常 是否 Nunit | 更新日期: 2023-09-27 18:31:54
我早些时候在为我正在处理的项目设置一些命令行脚本来测试我的 NUnit 测试套件时开始遇到问题。
我注意到,在Visual Studio
或Xamarin
运行测试时,结果是我预期的,但是当使用nunit-console
(mac v2.4.8
)从命令行运行时,它不会使某些测试失败。
控制台中未失败的测试都使用 [ExpectedException]
属性(包括类型和常规)。更改为使用 Assert.Throws<>
时,它在 IDE 和命令行中都能正常工作。
这是 Nunit 或我拥有的特定版本/平台的错误吗?
这是
unit-console
2.4.8 中的一个错误,正如一位评论者所建议的那样,与 VS 测试运行器无关。我在 cmd 行上使用 3.x 来解决它,方法是在将其添加到我的 Makefile 中并可以进行"制作测试"时进行本地 nuget 安装。
通过 2.4.8 进行测试(并暴露错误/问题):
nunit-console -nologo -label除外.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 install nunit.runners
./NUnit.Console.3.0.1/tools/nunit3-console.exe除了.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");
}
}
}