1)從技術上講,可以創建一個.vsmdi文件,而無需將您的測試項目添加到您的解決方案。由於VSMDI文件的內容是XML,所以您可以手動編寫它們,或者使用基於組裝中測試的工具生成它們。但是,當測試項目未包含在解決方案中時,VSMDI文件不太有用,因爲VSMDI文件的威力在管理您的測試。但是你仍然可以使用它們(參見問題2的答案)。
如果您想手工編寫vsmdi文件,您需要使用SHA1對FQN進行散列,並創建如下所示的哈希的前128位的Guid(來自Dominic Hopton的代碼)。查看他的博客文章的更多信息:Helpful Internals of TRX (and VSMDI files)。
private static HashAlgorithm s_provider = new SHA1CryptoServiceProvider();
internal static HashAlgorithm Provider
{
get { return s_provider; }
}
/// Calculates a hash of the string and copies the first 128 bits of the hash
/// to a new Guid.
///
internal static Guid GuidFromString(string data)
{
byte[] hash = Provider.ComputeHash(
System.Text.Encoding.Unicode.GetBytes(data));
byte[] toGuid = new byte[16];
Array.Copy(hash, toGuid, 16);
return new Guid(toGuid);
}
2)否,vsmdi文件不需要在你的溶液文件夾(或在解決方案),只要是Testlink元件點的含有試驗正確裝配的存儲屬性(相對到你的vsmdi文件)。例如:
<TestLink id="0c257cc9-ffed-cd5e-bda1-56df14ad68c2" name="AddOneAndTwo_Test"
storage="TestProject\bin\debug\testproject.dll" />
3)Vsmdi文件存在於解決方案級而不是在項目級。如果您有多個測試項目,則可以使用一個vsmdi文件來管理所有測試。請注意,當您從Visual Studio運行測試時,存儲屬性會被忽略,假設您已將解決方案加載到解決方案中
4)使用Vsmdi文件管理解決方案中的測試,並且可以創建多個VSMDI文件中的圖層。例如,您想要測試的解決方案中有多個程序集。在根測試列表(稱爲:測試列表)下,爲您的每個項目創建一個測試列表。然後,您可以將其中一個項目的測試列表分爲兩個或更多單獨的測試列表(例如一個用於測試業務邏輯,另一個用於測試錯誤處理)。當您只想測試項目A的業務邏輯測試時,您可以選擇相應的測試列表並在其中運行測試。
約vsmdi文件的額外注:
A)由於的Visual Studio 2012微軟決定讓VSMDI文件(並與他們的測試列表)已過時。測試列表已被測試類別(已存在於Visual Studio 2010中)和播放列表取代。 測試類別是您可以在單個測試方法上設置的屬性,並且可以在構建中使用。播放列表是在Visual Studio 2012 Update 2中引入的,目前在MSBuild中不支持。
有關測試類別的更多信息,請參閱:http://msdn.microsoft.com/en-us/library/dd286595.aspx