2012-02-27 103 views
2

我剛剛開始使用ReSharper,並正在尋找一種方法來解決我與「類型參數說明是多餘的」tooltip/quickfix的問題。在編寫單元測試時,我一直在使用Assert.AreEqual<string>(x, y),ReSharper將<string>的用法標記爲冗餘。我希望在單元測試中不會有那樣或那些類似用法的冗餘。有什麼辦法可以禁用這個特定的用例(這可以擴展到其他的斷言)?請注意,由於會在源文件中創建大量噪音,因此我想避免對評論進行壓制。我也不想完全禁用該功能。問題與Resharper的「類型參數是多餘的」和斷言

爲了澄清,我認爲這種特殊情況被錯誤標記的原因是因爲通用的使用會導致assert中的不匹配類型的錯誤在編譯時標記,而不是在測試運行時標記。我想保持這種失敗的早期行爲,但是基本上在我寫的每一個測試中都會擺脫所有額外的噪音。

感謝

編輯:已經有一個關於考試內容將是什麼樣子,所以我提供,是造成ReSharper的檢舉冗餘一個這樣的主張的例子問題。

[TestMethod] 
public void ViewModelConstructor_NullProgram_SetsVisibilityToCollapsed() 
{ 
    _currentProgram = null; //Set condition under test 
    var Target = TargetMaker(); //Use shared constructor code in all tests 
    Assert.AreEqual<System.Windows.Visibility>(System.Windows.Visibility.Collapsed, Target.SectionVisibility); 
} 

編輯2:下面是ReSharper建議更改之前和之後的示例。這兩段代碼顯示了非常不同的結果。我已經注意到測試函數名稱中的不同行爲。

class ClassUnderTest 
{ 
    public string fieldUnderTest { get; set; } 
    public ClassUnderTest() 
    { 
     fieldUnderTest = "New Value"; 
    } 
} 


[TestClass()] 
public class ClassUnderTestTest 
{ 

    [TestMethod()] 
    public void ClassUnderTestConstructorTest_FailsTest() 
    { 
     ClassUnderTest target = new ClassUnderTest(); 
     Assert.AreEqual(true, target.fieldUnderTest); 
    } 

    [TestMethod()] 
    public void ClassUnderTestConstructorTest_WontCompile() 
    { 
     ClassUnderTest target = new ClassUnderTest(); 
     Assert.AreEqual<string>(true, target.fieldUnderTest); 
    } 
} 
+0

爲什麼不只是爲你的單元測試項目禁用它? – 2012-02-27 14:10:40

+0

主要原因是我無法在每個項目的基礎上找到任何地方。我只能找到該功能的一般嚴重性設置。每個項目的設置在哪裏? – 2012-02-27 14:20:23

+1

如果您說R#建議刪除顯式類型參數,並且這樣做會導致行爲改變,那麼這就是R#中的一個錯誤,應該像這樣提升。畢竟,如果它的存在導致不同的事情發生,這並不是「多餘的」。然而,我並不完全確定我可以直觀地看到你的代碼... – AakashM 2012-02-27 16:53:13

回答

2

Resharper 6.1引入了設置 - 「圖層」的概念。 Here's a blog-post,教你如何設置每項目設置,這是你看起來想要的。

+0

這看起來像丹尼爾,它會很好,但我似乎無法得到它的工作。我創建了一個像你所說的鏈接的圖層。我禁用了那個困擾我的測試項目的選項。我保存它並取消選中該博客中提到的文件。該錯誤仍然被標記。我重新加載了Visual Studio,並且該錯誤仍然被標記。我通過工具提示禁用了該選項,並通過保存到對話框將它保存到了我的新圖層,並且仍在標記它。 DotSettings文件也以該項目命名。任何想法我錯了? – 2012-02-27 14:37:07

+0

GUI實際上是更新所創建的DotSettings文件中值的設置,但該設置未應用於當前源文件。 – 2012-02-27 15:57:45

+0

標記爲已接受,因爲這是一個可行的解決方案,我希望當R#爲圖層提供GUI支持時,這將工作並解決我的問題。 – 2012-02-29 14:52:25

0

點擊redundent部分,然後點擊該行的左側,然後選擇Inspection option for Redundent...。在那裏你可以選擇一個較低的限制級別,直到你喜歡它。

+0

這個據我所知可以禁用它的一切,而不僅僅是我的特殊用法。 – 2012-02-27 14:38:39

0

您不必圍繞Assert.AreEqual的每個實例註釋。相反,您可以在整個源文件中使用註釋來突出顯示。只需在文件開始處添加一條禁用評論,並在最後添加一條禁用評論。最低噪音。