无法传递字符串数组

cod*_*sed 8 .net c# nunit unit-testing

我想使用NUnit Test传递不同的测试参数.

我可以传递整数数组,没问题,但是当我传递字符串数组时它不起作用.

[TestCase(new[] { "ACCOUNT", "SOCIAL" })]
public void Get_Test_Result(string[] contactTypes)
{
}
Run Code Online (Sandbox Code Playgroud)

错误3属性参数必须是属性参数类型的常量表达式,typeof表达式或数组创建表达式...\ContactControllerTests.cs 78 13 UnitTests

当我使用字符串数组作为第二个参数时,它可以工作.

那是什么原因?

[TestCase(0, new[] {"ACCOUNT", "SOCIAL"})]
public void Get_Test_Result(int dummyNumber, string[] contactTypes)
{
}
Run Code Online (Sandbox Code Playgroud)

小智 5

正如 km 所说,我相信编译错误是重载解析和数组协方差的结果,并且强制转换为对象的建议对我不起作用。

但是,指定参数名称(在 TestCaseAttribute 的情况下为 arg)可以修复重载解析中的混淆,因为您正在准确指定所需的重载:

[TestCase(arg:new string[]{"somthing", "something2"})]
Run Code Online (Sandbox Code Playgroud)

这对我来说是编译和工作的。


Sai*_*fur 0

考虑执行以下操作

[TestCase("ACCOUNT", "SOCIAL")]
public void Test1()
{

}
Run Code Online (Sandbox Code Playgroud)

不确定你的测试是否与我的类似。但我通过以下测试得到了预期的结果

[TestFixture]
public class TestCaseTest
{
  [TestCase("ACCOUNT","SOCIAL")]
  public void Get_Test_Result(String a, String b)
  {
    Console.WriteLine("{0},{1}",a,b);   
  }
}
Run Code Online (Sandbox Code Playgroud)

结果

在此输入图像描述

此外,如果您想要对TestCaseAttribute进行一些引用