【问题标题】:How to find all methods in C# solution如何在 C# 解决方案中查找所有方法
【发布时间】:2013-11-26 09:17:30
【问题描述】:

我需要在 C# 解决方案/项目中列出所有方法名称及其单元测试。

您对此有什么想法吗?

更新:你知道任何 C# 源代码解析器吗?

【问题讨论】:

  • 一个工具应该如何知道方法和单元测试是如何相关的?
  • 为什么需要这些信息?你想怎么用?
  • 我需要验证一个方法的单元测试是否足够强大?我想知道开发人员是否只是编写单元测试代码以完全覆盖,但断言一些无意义的东西,如 Assert.IsTrue(true)。所以我尝试通过删除代码路径,修改常量,构建解决方案并再次运行单元测试来修改源代码,如果有任何单元测试总是通过,那么单元测试是“弱”的。

标签: c# unit-testing methods .net-reflector


【解决方案1】:

看起来您需要代码覆盖率工具,该工具会分析您的解决方案并显示哪些代码行已测试,哪些未测试。看看NCoverTestDriven.NETNCrunch

请记住,仅仅为某些方法找到单元测试名称是不够的,因为方法内部可能有许多代码执行路径,其中一些可能没有被测试覆盖。

【讨论】:

    【解决方案2】:

    您可以使用反射来查找所有方法(Assembly.GetTypes() 返回所有类型,type.GetMethods() 返回其方法)。由于单元测试也是程序,您可以通过使用method.GetCustomAttributes() 查找[TestMethodAttribute](取决于您使用的测试框架)来遍历单元测试方法。

    但要找出每种测试方法的作用要困难得多,因为您对测试包含的内容没有任何限制。代码覆盖率工具可以准确地向您显示测试了代码的哪些部分,甚至是每个方法内部的部分(例如,覆盖了if 语句的哪些分支)。

    【讨论】:

    • 我需要在源代码中找到方法,而不是在 MSIL 中,因为我想修改源代码中的一些代码。只是一些小的修改,比如改变常量。在 MSIL 中进行修改会产生开销。
    【解决方案3】:

    Visual Studio 中有一个名为“资源视图”的窗口,它将枚举树视图结构中的所有类和方法,然后在选中时会将光标带到相关文件/行。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-03
      • 2014-05-24
      • 1970-01-01
      • 2021-04-06
      相关资源
      最近更新 更多