c# - 传递 UInt32 作为参数 TestCase NUnit

标签 c# unit-testing nunit

我正在使用 NUnit 3.8.1,我正在尝试做一个非常简单的测试:

    [TestCase(0)]
    [TestCase(11)]
    [TestCase(12)]
    [TestCase(13)]
    [TestCase(14)]
    public void GivenUserCreatesPinWhenItIsInWrongPositionThenThrowArgumentException(uint position)
    {
        //Assert
        Assert.Throws<ArgumentException>(() =>
        {
            new PositionPin(position);
        });
    }

我得到这个异常:

Message: System.ArgumentException : Object of type 'System.Int32' cannot be converted to type 'System.UInt32'

只要我将 uint 更改为 int 并将 int 转换为 uint,它就会在方法中生效。我真的不想这样做,有没有办法保留我的单位?

最佳答案

只需使用 u 直接告诉编译器,该数字是一个 System.UInt32 数字。

[TestCase(0u)]
[TestCase(11u)]
//...

或者:使用 int 作为参数并用 (uint) 进行转换

关于c# - 传递 UInt32 作为参数 TestCase NUnit,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46989397/

相关文章:

events - 如何通过 SetUpFixture 在多个 Nunit TestFixtures 中使用单个 Log4Net 实例

c# - asp mvc Controller 从 ajax 接收空值

c# - 有没有更合适的方法来测试构造函数是否抛出异常?

ios - 调用异步方法的方法的单元测试

c# - 如何强制方法使用模拟?

.net-4.0 - teamcity NUnitLauncher .net 4

asp.net-mvc - 使用 NUnit 进行 ASP.NET MVC 单元测试

c# - 使用 C# 将 txt 打印到默认打印机

c# - 引用文件的 XML 注释

c# - ArrayList 到 C# 中的 int[]