2010-01-08 61 views
2

我正在爲Windows窗體應用程序的某些部分編寫一個NUnit TextFixture。一些文件中的類都是從UI組件類派生的,就像這樣:有沒有辦法阻止Visual Studio 2008在默認情況下在設計視圖中打開文件?

[TestFixture] 
public class MainFormTest : PersistenceTestBase // Base class here is not a form 
{ 
    class TestMainForm : MainForm // MainForm inherits from Form 
    { 
     public new String SomeMethod() 
     { 
      // Some MainForm private method overridden to expose it to my test fixture 
     } 
    } 

    private TestMainForm mainForm; 

    [TestFixtureSetUp] 
    public void TestFixtureSetUp() 
    { 
     mainForm = new TestMainForm(); 
    } 

    [Test] 
    public void TestMainFormDoesXYZ() 
    { 
     // Perform unit testing... 
    } 
} 

不過,我遇到了一個煩惱是,因爲類從UI組件類繼承時,Windows打開了設計器窗口時,我在解決方案資源管理器中雙擊我的單元測試文件。其中,由於它不是一個「真正的」UI元素(而是一個測試類),它顯示爲一個破損的UI(取決於我如何排列文件,消息如「設計者無法顯示此文件,因爲沒有任何類在它內部可以設計「顯示)。有沒有辦法抑制這種行爲,或者我總是不得不右鍵點擊這個文件和「查看代碼」?

回答

7

右鍵單擊,選擇「打開方式...」,選擇所需的編輯器,然後單擊「設置爲默認值」。

真的需要你的測試班級假裝他們不是嗎?這聽起來對我來說不是一個非常好的主意。

+0

不錯!實際上,測試類*擴展*基本控件(作爲單元測試的內部類),但我從不想將它們編輯爲表單(僅限於基類)。所以他們真的在測試中扮演真正的形式。這樣做的原因是基本上讓我的UnitTest以用戶的身份控制Form,並且可能訪問測試所需的一些內部位。我發現UnitTesting表單在使用某些記錄/回放框架之外存在問題。任何其他想法的Windows窗體的手動測試? – 2010-01-08 20:11:24

+1

呵呵,就在我之前評論中的「添加評論」之後,我意識到也許我的最後一句話應該是自己的堆棧溢出問題(如果尚不存在的話)。 :-) – 2010-01-08 20:12:36

+0

@Ogre:我沒有注意到測試夾具本身不是延伸形式的類。 – 2010-01-08 20:21:26

3

將一個[System.ComponentModel.DesignerCategory("")]屬性添加到該類中,以防止Visual Studio在解決方案資源管理器中雙擊該文件以打開它時打開設計器。

+0

這是更好的解決方案!我的單元測試對於從DbConnection派生的類有問題,而且非常煩人。添加屬性修復它! – bychkov 2013-07-19 21:27:55

0

另一種解決方案:

右鍵單擊文件,然後單擊打開方式...菜單。打開一個對話框,選擇Microsoft Visual Basic編輯器並單擊設爲默認。點擊Ok就是這樣,該文件將在未來使用代碼編輯器而不是其設計器打開。

相關問題