2016-11-25 80 views
0

我最近與模塊化結構工程由主組件的(我們將其命名爲app)和多data-provider的。每個提供程序位於單獨的存儲庫中,並實現一些基本接口,如IDataProvider。任何人都可以實施自己的提供者我爲app存儲庫中的主要功能編寫了測試套件(NUnit 3.5)。它應該與每個data-provider一起運行。這個測試套件確保正確的提供者實施運行外部測試套件組裝NUnit的測試,在Visual Studio測試運行

因此我需要從特定data-provider組件運行外部測試。當然有環境變量,runner參數等,但我不知道如何使Visual Studio Test Runner顯示並從UI執行這些測試。

Git SubmodulesGit Subtrees可以幫助維護從單獨的data-provider回購協議的主要app存儲庫的鏈接。然而這種方法有一些額外的警告。

很明顯,我不是要面對這樣的問題的第一人。請分享你的經驗。

編輯

我會盡力澄清問題。以下是駐留在「main-app」存儲庫中的「應用程序」的代碼。

// repository "main-app" 
namespace MainApp 
{ 
    public interface IDataProvider 
    { 
     string Concat(params string[] arg); 
    } 
} 
namespace MainApp.Tests 
{ 
    [TestFixture] 
    public class SampleTests 
    { 
     [Test] 
     public void GetDataTest(IDataProvider provider) 
     { 
      Assert.AreEqual("ab", provider.Concat("a", "b")); 
     } 
    } 
} 

這裏是提供者實現(駐留在獨立的存儲設備)

// repository "simple-provider" 
namespace MainApp.SimpleProvider 
{ 
    public class SimpleProvider : IDataProvider 
    { 
     public string Concat(params string[] arg) 
     { 
      return string.Concat(arg); 
     } 
    } 
} 

SimpleProvider項目conatins到編譯MainApp.dllMainApp.Tests.dll引用。我需要使用Visual Studio Test Runner在SimpleProvider項目中運行MainApp.Tests.dll中的測試。

+0

請出示必要的屏幕截圖來說明。單詞簡單幹燥。 –

回答

0

我建議創建可以運到用戶在創建其數據提供一個TestInfrastructure DLL。然後用戶可以創建一個從您的基類繼承的測試類來運行通用測試。

namespace MainApp.SimpleProvider.Tests 
{ 
    [TestFixture] 
    public class SimpleProviderTests : DataProviderTests 
    { 
     // Add here specific tests if you want. 
    } 
} 

如果您想通過轉換爲某種類型來運行測試,則可以使用泛型。或者您可以創建一個抽象方法,它將返回數據提供者的一個實例,並讓提供者的創建者處理該實例化。

+0

它可能工作,但這種方法需要在每個數據提供者項目中的所有測試夾具的複製(至少作爲一個子類)。在主要的測試程序集更改的情況下,繼承的測試會變得不一致(如果沒有固定的類實現,新添加的測試夾具將不會執行)。這正是我想要避免的。 但這是一個有趣的想法。我將嘗試使用Reflection.Emit即時創建繼承的子測試類,因此子測試類將完全獨立於原點。 – kreig