2013-05-06 43 views
0

我試圖寫一個約定的測試,它指定的方法應該只在某些情況下被稱爲 - 特別是我有一個靜態Empty消氣,我只希望,允許使用測試方法,用TestAttribute裝飾的vis方法。查找其中一個方法被稱爲一項公約測試

我知道,我也應該紀念吸氣劑過時,使用另一種方法等,但我也想解決這個公約測試,因此不會在未來的突破。

我猜我想通過反射在我的慣例測試使用靜態分析。我將如何去執行這種分析?

+1

反射不會提供您的方法的實現細節(正文)。你應該使用類似於Roslyn的東西。我建議爲你的問題添加標籤'roslyn',這樣你就可以從它的團隊獲得幫助,就像Eric Lippert所做的那樣http://stackoverflow.com/questions/15891197/finding-everywhere-an-enum-is-converted字符串 – 2013-05-06 05:04:59

+0

@Ilya完成了,歡呼聲 – 2013-05-06 05:12:04

回答

1

是,羅斯林可以用這樣的事情有所幫助。

var solution = Solution.Load(pathToSolution); 
foreach (var project in solution.Projects) 
{ 
    var type = project.GetCompilation().GetTypeByMetadataName(typeNameContainingMethod); 
    var method = type.GetMembers("Empty").Single(); 
    var references = method.FindAllReferences(solution); 
    foreach (var referencedSymbol in references) 
    { 
     foreach (var referenceLocation in references) 
     { 
      CheckIfCallIsAllowed(referenceLocation); 
     } 
    } 
} 

你也可以看看創建一個代碼問題巡視,並隨附羅斯林CTP的另一種方法的代碼問題模板:什麼這可能看起來像作爲一個獨立的分析,會是這樣的一個例子在編輯時這樣做,而不是在測試中。

相關問題