NUnit测试:c#中测试用例的随机输入



如何在单元测试中为TestCase属性设置随机字符串?如何在c#中创建一个带有随机输入的测试?

[Test]
[TestCase("")]
public async Task TestGet(string inp){....}

public string CreateRandomString(int size)
{
StringBuilder builder = new StringBuilder();
Random random = new Random();
char c;
for (int i = 0; i < size; i++)
{
c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 
65)));
builder.Append(c);
}
return builder.ToString();
}

使用NUnit,您可以使用TestCaseSource:

[Test]
[TestCaseSource(nameof(CreateRandomStrings))]
public void TestGet(string input)
{
// your test ...
}
public IEnumerable<string> CreateRandomStrings()
{
// create 5 random strings
for (int i = 0; i < 5; ++i)
{
yield return CreateRandomString(10);
}
}

private static readonly Random random = new Random();
public string CreateRandomString(int size)
{
StringBuilder builder = new StringBuilder();
char c;
for (int i = 0; i < size; i++)
{
c = Convert.ToChar(Convert.ToInt32(Math.Floor(26 * random.NextDouble() + 65)));
builder.Append(c);
}
return builder.ToString();
}

您可以使用TestCaseSource属性来执行此操作:

public static string RandomString()
{
const string alphabet = "abcdefghijklmnopqrstuvwyxzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789";
int size = 50;
char[] chars = new char[size];
for (int i = 0; i < size; i++)
{
Random rand = new Random();
chars[i] = alphabet[rand.Next(alphabet.Length)];
}
var a = new string(chars);
return a;
}
[Test]
[TestCaseSource(nameof(RandomString))]
public void TestGet(string random)
{
// Do something
}

最新更新