【问题标题】:How come there's no C# equivalent of python's doctest feature? [closed]为什么没有与 python 的 doctest 功能等效的 C#? [关闭]
【发布时间】:2010-10-19 05:22:55
【问题描述】:

似乎这是向一些人介绍单元测试的好方法。

【问题讨论】:

标签: c# .net python unit-testing doctest


【解决方案1】:

一方面,documentation for doctest 谈到了“交互式 Python 会话”。在 C# 中没有类似的东西......那么输出将如何表示?您将如何进行所有必要的设置?

我敢说这样的事情是可能的,但我个人认为,至少对于 C# 来说,将单元测试 作为单元测试 会更清晰,您可以享受以下事实的所有好处您正在编写代码而不是 cmets。可以在编译时检查代码的语法正确性,您有 IntelliSense、语法高亮、调试器支持等。

如果您正在编写代码,为什么不将其表示为代码?诚然,在 XML 文档中包含示例代码是相当普遍的,但这很少以测试的形式出现 - 如果没有等效的“交互式会话”,则需要人工构造以可测试的形式表示输出。

我并不是说这是 Python 中的一个坏特性——只是我认为它不能很好地映射到 C#。语言有自己的风格,并不是语言 X 中的每个功能都适用于语言 Y。

【讨论】:

  • C# 有几个交互式 shell,最好的之一是 Mono 的 C# REPL。但我认为你可能错过了 doctest 的重点。它不能替代对主要代码进行单元测试。相反,它是(单元)测试文档的方式。 IE。它验证文档中的示例代码是否按照它所说的那样做。此示例代码应该采用有助于向读者阐明的形式,而不是采用测试的形式。
  • doctest 还具有对主要代码的一般测试的次要用途。但正如文档所警告的那样,“用晦涩的测试用例填充文档字符串会导致文档错误”,因此建议区分这两个目的。
  • @Matthew:仅仅因为有交互式 shell 的实现并不意味着 C# 本身具有已定义的交互式 shell 行为。我不愿意在 cmets 中看到特定于实现的语法。至于我是否误解了这个问题:OP建议这将是向某人介绍单元测试的好方法。我认为引入单元测试的更好方法是编写一些实际单元测试
  • @Jon,我同意可移植性问题是有效的。但是,已经有多种特定于实现的文档语法(NDoc、Sandcastle 等),当然人们使用不属于标准的库。再次查看这个问题,您可能是正确的,OP 想要一个 C# doctest 用于一般单元测试(而不是对文档进行单元测试)。他可以更好地解释他的预期用例是什么。
  • @Matthew:NDoc 和 Sandcastle 都从标准 XML 文档 cmets 构建文档。输出是风格化的,但输入是相同的 - 您可以为两者使用相同的源。可能有特定的扩展,但您不必使用它们。如果没有 any 标准 REPL 格式,我不认为 doctest 处于类似的位置。我确实看到了能够测试文档示例的好处,但我怀疑增加的复杂性 for C# 不值得(而 Python 提供了更自然的适合)。
猜你喜欢
  • 1970-01-01
  • 2011-05-02
  • 1970-01-01
  • 2011-03-05
  • 2016-07-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-14
相关资源
最近更新 更多