如果要產生一個亂數時很常會想到 Guid 方法解決,在 C# 使用 Guid 的方式相當簡單僅要透過 Guid.NewGuid 靜態方法產生一組 Guid 使用,在目前公司很常看到使用 Guid 作為識別碼,今天在重構舊代碼時忽然想到如果遇到 Guid 該如何進行加上單元測試,以下就目前想到的解法進行測試與說明,如果各位高手們有更好的方法歡迎高抬貴手一起討論研究。
解決方案
public static class Generator { public static Guid NewGuidToken() { return Guid.NewGuid(); } }第一時間讓我想到之前上 TDD 遇到測試今天是不是聖誕節案例時很像,但特別為了 Guid 寫一個介面讓使用的 class 實做,在透過建構子注入就可以斷開其依賴關係,但這 case 算是很單純個人覺得沒必要做這麼複雜的工,忽然想到在 C# 中每個資料型別物件大多都提供 TryParse 進行轉換,且該方法回傳結果為 true / fales bool型別,與 UnitTest 中的 Assert 搭配使用相當方便,單元測試 Sample Code 如下
[TestFixture()] public class GeneratorTests { [Test()] public void Input_NewGuid_Return_True() { // act var input = Generator.NewGuidToken(); // assert Assert.IsTrue(Guid.TryParse(input.ToString(), out Guid output)); } [TestCase("Teset123")] [TestCase("Marcus")] public void Input_FakeGuid_Return_True(string input) { Assert.IsFalse(Guid.TryParse(input, out Guid output)); } }當你的情境只需要驗證產生出來的是否符合 Guid 時,就可以直接透過 Assert.IsTrue(your guid string) 來確認 Guid 格式是否正確 (第 11 行 );反之,如果要驗證格不符合時透過不是時用 Guid.TryParse + Assert.IsFalse 即可 ( 第17行 ),相當容易上手且閱讀性很高。
接著在來確認單元測試後的結果,其單元測試結果都執行正常
三份測試都通過且驗證無誤,綠燈 Pass 測試成功 !!
Summary
以上就是針對 Guid 型別寫單元測試的方法,也是小弟的矬見,如果各位大大有更好的方式歡迎一起討論跟溝通 :)
以上就是針對 Guid 型別寫單元測試的方法,也是小弟的矬見,如果各位大大有更好的方式歡迎一起討論跟溝通 :)
0 意見:
張貼留言