2013-11-26 55 views
0

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

你有什么想法吗?

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

+4

工具应该如何知道方法和单元测试是如何相关的? –

+0

为什么你需要这些信息?你想如何使用它? –

+0

我需要验证一个方法的单元测试是否足够强大? 我不知道开发者是否将代码单元测试编码为完全覆盖,但断言像Assert.IsTrue(true)这样的废话。所以我尝试通过删除代码路径来修改源代码,修改常量,构建解决方案并再次运行单元测试,如果单元测试总是通过的话,那么单元测试是“弱”的。 – proliid

回答

5

看起来像你需要代码覆盖工具,它分析你的解决方案,并显示哪些代码行测试,哪些不是。看看NCover,TestDriven.NETNCrunch

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

1

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

但是,找出每种测试方法的作用并不难,因为您对测试包含的内容没有限制。代码覆盖工具可以准确显示代码的哪些部分已经过测试,甚至每个方法的以内(例如,涵盖if语句的哪些分支)的部分

+0

我需要在源代码中找到方法,而不是在MSIL中,因为我想修改源代码中的某些代码。只是一些小的修改,如改变常量。它在MSIL中修改开销。 – proliid

相关问题