2013-11-26 88 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

相關問題