Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/visual-studio/7.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 单元测试方法中是否需要总结_C#_Visual Studio_Unit Testing_Mstest - Fatal编程技术网

C# 单元测试方法中是否需要总结

C# 单元测试方法中是否需要总结,c#,visual-studio,unit-testing,mstest,C#,Visual Studio,Unit Testing,Mstest,既然单元测试方法的命名使其目的更有意义,那么有必要为单元测试方法添加摘要吗 例如: /// <summary> /// Check the FormatException should be thrown when a give country data line contains a invalid number. /// </summary> [TestMethod] public void FormatException_Should_Thrown_When_Par

既然单元测试方法的命名使其目的更有意义,那么有必要为单元测试方法添加摘要吗

例如:

/// <summary>
/// Check the FormatException should be thrown when a give country data line contains a invalid number.
/// </summary>
[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
  ...
}
//
///检查当给定国家/地区数据行包含无效数字时应引发FormatException。
/// 
[测试方法]
当解析包含InvalidNumber()的国家线时,应抛出公共无效格式异常
{
...
}

没有必要,但是如果您觉得XML注释在单元测试本身的名称之外增加了价值(看起来很全面),那么您将为其他开发人员提供服务


如果摘要本质上是单元测试方法名称的直接副本,那么我认为这太过分了。

就我个人而言,我试图让测试变得足够简单,以便阅读文档,这是多余的。我在测试方法中使用内联注释来解释我为什么以特定的方式做某事,而不是我在做什么。

如果你认为这是对时间的最佳利用,那么就去做,否则就不要去做。我不会。

对于上面的例子,我想说这是没有必要的,除非您使用一个从源代码中提取文档的工具(比如javadoc或其他东西)


一个常见的经验法则是,代码说明您正在做什么,注释说明原因,但由于名称非常冗长(我认为这是可以的,因为没有人需要键入它)我不认为该评论有任何贡献。

当摘要可以提供更多可以/应该用方法名称编码的信息时,有必要添加摘要。请注意,当我在引用任何文档时说“必要”时,我的意思是“必须将100%所需的上下文/细节/细微差别传达给继承项目的新程序员或5年后的您自己”。

我认为冗长的描述性名称比XML注释更重要。因为单元测试不是API的一部分,所以不需要XML注释

例如:

[TestMethod]
public void FormatException_Should_Thrown_When_Parse_CountryLine_Containing_InvalidNumber()
{
  ...
}
它比:

///<summary>
/// Exception Should Thrown When Parse CountryLine Containing InvalidNumber
///</summary>
[TestMethod]
public void Test42()
{
  ...
}
///
///分析包含InvalidNumber的CountryLine时应引发异常
///
[测试方法]
公开测试42()
{
...
}

XML注释应该用于记录API和框架。

我实际上更喜欢使用DescriptionAttribute而不是summary标记。原因是Description属性的值将显示在结果文件中。当您只查看日志文件时,它使故障更容易理解

[TestMethod,Description("Ensure feature X doesn't regress Y")]
public void TestFeatureX42() {
  ..
}

如果您有一个描述性的方法名,则完全不需要XML注释。它是单元测试方法的必备工具

您已经在正确的轨道上使用了描述性测试方法名称。(许多敏捷和TDD实践者认为测试方法应该包括“应该”,例如,如本文所示

我个人喜欢这样的方法名称:

MyClass_OnInvalidInput_ShouldThrowFormatException()

但这只是我个人的偏好。

其他人看到Skeet的答案很奇怪,然后马上删除吗?@Will-是的,我也注意到了。我们是开发人员。注意到奇怪的事情是我们大脑的工作方式:)发布答案没有什么不正常的,意识到你误读了问题并删除了它。这是我们谈论的飞碟。他走路很完美。坦率地说,你应该因为认为他是人类而被禁止。这家伙是个10公里的人,当他追到你的时候,他会把你的脊椎撕下来。我给他+1分。此外,我还从未见过单元测试的文档。如果代码编写良好,它应该是自描述的。这是典型的,如果你使用组合方法-+1从我太。所有项目(包括测试项目)都应保留方法的命名约定-将摘要或说明放在方法的名称中而不是放在设计用于保存此类数据的位置有什么合理的原因?您能否评论一下测试资源管理器现在是如何与
说明
属性集成的?我知道这篇文章很老了,但我从来不知道有专门针对测试的描述属性,我立即添加了一个属性来查看它的外观。令我惊讶的是,我在任何地方都看不到它。该功能是否已删除(在这种情况下,该属性是否会被弃用?)或者我是否遗漏了什么?@julealgon至少在VS2015中似乎确实如此。DescriptionAttribute不会显示在IDE中的任何位置,即使测试运行失败。我需要检查VSTest.Console的控制台记录器是否足够友好,至少在测试失败时将其输出到控制台。@TanveerBadar这对我来说真是一个挫折,你可能认为他们会在解决方案资源管理器中添加类似的内容。我不同意这个问题……Visual Studio 2017也有同样的问题。描述属性是无用的。