如何将Guid.Empty传递给参数化单元测试?

时间:2016-09-01 14:15:08

标签: c# .net visual-studio unit-testing nunit

我试图将Guid.Empty传递给我的单元测试:

[TestCase(null)]
[TestCase(Guid.Empty)]
public void When_AccountGuid_IsNullOrEmpty_AddError_Is_Invoked(Guid? accountGuid)
{

}

然而编译器抱怨:

  

属性参数必须是常量表达式,typeof表达式   或属性参数类型

的数组创建表达式

如何将Guid.Empty传递给我的单元测试方法?

我还尝试通过将其声明为类中的私有成员来解决问题,并使用相同的编译器错误:

        private static Guid _emptyGuid = Guid.Empty;
        [TestCase(null)]
        [TestCase(_emptyGuid)]
        public void When_AccountGuid_IsNullOrEmpty_AddError_Is_Invoked(Guid? accountGuid)
        {

        }

2 个答案:

答案 0 :(得分:9)

在这种情况下,使用TestCaseSource属性来定义案例列表。

static Guid?[] NullAndEmptyGuid = new Guid?[] { null, Guid.Empty };

[TestCaseSource("NullAndEmptyGuid")]
public void When_AccountGuid_IsNullOrEmpty_AddError_Is_Invoked(Guid? accountGuid)
{

}

答案 1 :(得分:-1)

实际上,Empty是一个变量,您无法在属性中传递变量。 表达式必须是常量,尝试传递“新Guid()”或默认(Guid)