2015-02-23 22 views
2

以下是我試圖達到的目標。我通過nuget提供了一些代碼,並且還想發佈第二個包含測試的nuget來驗證服務是否正常工作/部署。該測試nuget將包含所有核心測試,無需進行任何修改(除了通過配置文件)。如何從外部程序集運行測試

因此,這裏是從大會一基類:

[TestClass] 
public abstract class BaseTestClass 
{ 
    [TestCleanup] 
    public void TearDown() 
    { 
     // do some cleanup... 
    } 

    [TestMethod] 
    public void BaseTest() 
    { 
     // base test code... 
    } 
} 

而現在,我要引用這個大會一個到另一個組件B,做這樣的事情:

[TestClass] 
public class ChildTestClass : BaseTestClass 
{ } 

問題是,測試瀏覽器沒有看到BaseTest方法。它只會看到在子類本身中聲明的測試方法。沒有正確發現基類中的任何測試方法。

我該怎麼做?

僅供參考:當我做同樣的事情時它工作正常,但都在同一個裝配/項目中。我正在使用MSTest和ReSharper測試運行器。 MSTest不會顯示任何內容,但ReSharper有時會顯示基本測試,但從不運行它,即使我能夠選擇並運行特定測試,它也將始終只運行在子類中聲明的測試。

+0

我編輯了自己的冠軍。請參閱:「[應該在其標題中包含」標籤「](http://meta.stackexchange.com/questions/19190/)」,其中的共識是「不,他們不應該」。 – 2015-02-23 21:00:42

+0

@JohnSaunders,謝謝你的修改。我不知道這個規則。 – Jeep87c 2015-02-23 21:10:10

+0

試用NUnit 2.6.4。我只是將我的TestBaseClass之一移動到一個單獨的DLL,並繼續工作。不是一個答案,至少不是你正在尋找的那個,但即使遷移有點勞動密集型仍然是一個選擇。 – user922020 2015-02-23 22:01:51

回答

2

討厭成爲壞消息的持有者,但簡單地說你不能。

Visual Studio不支持這一點。有一個userVoice項目有望在未來添加支持,但在此之前,您無法以這種方式構建測試。

http://visualstudio.uservoice.com/forums/121579-visual-studio/suggestions/6030736-support-test-inheritance-for-base-classes-in-diffe

FYI官方MS響應,確認它: https://connect.microsoft.com/VisualStudio/feedback/details/989781

+0

謝謝您的詳細解答。我也明白,這是特定於MSTest,使用Resharper的情況如何?它可以工作嗎? – Jeep87c 2015-02-23 21:08:31

+0

似乎可能,雖然我不知道他們的測試跑步者如何在內部工作。如果它只是傳遞到封面下的MSTest組件,它可能會遭受同樣的錯誤。如果沒有,我會認爲它有很高的工作可能性。如果我有一個Re#呃的副本,我會嘗試爲它做一個快速測試,但是我之前停止使用它,因爲我的主要解決方案太大而無法使用它。 – Tim 2015-02-24 13:20:57