c# - 创建随机测试好吗?

标签 c# unit-testing testing

<分区>

比如这样的测试:

[Test]
public void Test_With_Many_Random_Words()
{
  var randomWords = new string[100];
  for (var i = 0; i < 100; ++i)
    randomWords[i] = GenerateRandomWord();

  var trie = new PrefixTrie();
  for (var i = 0; i < 100; ++i)
    trie.AddWord(randomWords[i]);

  Assert.AreEqual(100, trie.CountOfWords);
  foreach (var word in randomWords)
    Assert.IsTrue(trie.ContainsWord(word));
}

private string GenerateRandomWord()
{
  var random = new Random();
  var builder = new StringBuilder();

  var length = 1 + (random.Next()%100);
  for (var i = 0; i < length; ++i)
  {
    var charCode = random.Next()%26;
    builder.Append((char) ('a' + charCode));
  }
  return builder.ToString();
}

或者用“testword1”、“alsotestword2”、“notword3”等少数已知词创建测试并用它们检查代码的正确性会更好?

最佳答案

您可以使用生成的测试数据,但我不鼓励您使用随机实时生成的输入,原因之一是:可重复性。

如果您的代码中存在问题,您的测试可能会突然变红,因为您不小心发现了“错误”的参数组合……或者没有。

这样的测试非常不可靠。

关于c# - 创建随机测试好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34155429/

相关文章:

ruby-on-rails - 在不删除测试数据库的情况下运行 Rails 测试

ruby - Rails 3.1 Rspec 为模型创建测试用例验证字段

unit-testing - 在描述的案例中寻找可测试的设计

c# - 使用 Google 的 WPF 应用程序身份验证

python - 模拟 Python 的内置打印功能

java - 在 Spring Web 应用程序中运行 JUnit 测试时指定 Maven 配置文件

c# - 我如何告诉 Moq 返回任务?

c# - 当可见性改变时,mdi 子窗体绘制缓慢

c# - 调用 LoadScene/LoadLevel 后场景中的对象变暗

c# - 无法创建库并链接到控制台应用程序