如何为 NUnit 测试用例创建编译时常量字符串 "n" 字符长

How to create a compile time const string "n" characters long for NUnit Testcase

使用 NUnit 我想测试给定的字符串是否短于 200 个字符。 我的目标不是硬编码这个字符串,因为我将在另一个测试中得到一个包含 201 个字符的字符串作为对应部分。

让我们看看测试签名:

[TestCase("GetTooLongName")]
public void If_NameIsTooLong_ReturnError(string name)

我尝试使用一个字符串构造函数,它有 2 个参数,一个 char 和它将被连接的次数。我试图从字段和函数中获取它:

private static readonly string GetTooLongName = new('x', 201);
private static string LongNameStillOk => new('x', 200);

最后我得到一个错误:

An attribute must be a constant expression...

有没有一种简洁明了的方法来提供这么长的字符串来测试属性?

我终于使用了 NUnit 的 TestCaseSource 属性。

出现代码如下:

private const int MAX_ALLOWED_STRING_LENGTH = 200;
private static string[] _nameTooLongSource= {new('x', MAX_ALLOWED_STRING_LENGTH + 1)};

[TestCaseSource(nameof(_nameTooLongSource))]
public void If_NameIsTooLong_ReturnError(string name)

这将为 _nameTooLongSource 数组的每个元素创建一个场景。它只有一个元素,就是长字符串。