如何为 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
数组的每个元素创建一个场景。它只有一个元素,就是长字符串。
使用 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
数组的每个元素创建一个场景。它只有一个元素,就是长字符串。