代碼測試的由來
上幾個星期上面分配給我一個裝備系統,我經過了幾個星期的戰斗寫完90%的代碼. 后來策划告訴我需求有一定的改動,我就隨着策划的意思修改了代碼. 但是測試(Xu)告訴我裝備系統很多功能都用不上了. Xu: 我有300多項測試用例,現在有很多項都無法運行了. 你修改了部分代碼我又要全部跑一邊, 我只能告訴你,我只能大概看一遍了. 之后我就買了本單元測試的書籍,向項目中引用代碼測試的概念,幫助我幾分鍾測試完xxx多項測試用例,不過跟主程談引入這個東西還是失敗了, 應該他們認為不需要這個東西. 0.0那我還是把他放出來吧.
PLUnitTest(工具的由來)
我照着書籍上在Unity項目中創建單元測試框架, 后來發現我之前寫好的函數,輸入我傳入一些數據才可以獲取函數結果. 這些數據是一些類. 這些類的構造結構非常復雜,我的單元測試是在Untiy不運行下測試的. 而這些數據需要Unity運行下才能獲取(比如從本地xml讀取出來), 我不可能因為測試幾個函數又要編寫一套數據讀取模塊獲取到函數需要的數據?(這樣太麻煩), 聰明的盤子臉想到了在游戲中把這些數據序列化保存下來,拿到單元測試項目中使用,就可以測試自己的函數啦. 這個工具就誕生了.
如果你想在Unity 或者 其他項目中引入單元測試,但因為自己要組織數據來測試函數而煩惱,這個工具可以幫助你.
工具的作用:
1) 支持Json格式化輸出字符串(以Json格式查看對象信息)
2) 支持對象狀態捕捉
3) 序列化支持(Json,BinaryFormatter,ProtoBuffer等)
這里我就直接附上部分代碼,圖,地址.
namespace PlatefaceTest { [TestClass] public class EquipForgeTest { [TestMethod] public void EquipCompoud() { //組織本次測試所需要的數據,PLUnitTools StateTools.CurSerializeType = SerializeType.Protobuf_Net; //選擇序列化方式 var i = StateTools.GetState<c_gs.MetaData.Formula>(DefineTestId.TestId); //反序列化,你捕捉的對象 //代碼測試 Assert.IsTrue(ItemManager.Instance.MasterialTypeCheck(i, EquipForge.Instance.MasterialItemAry)); } } }