我一直在使用我一直在玩的海邊應用程序中使用測試驅動開發,並且我的所有數據都作爲對象存儲在圖像中(而不是數據庫)。使用Smalltalk Seaside測試夾具或同等測試數據?
所以,當我跑我的測試,我不得不小心地儲存起來真實的數據,然後纔會慢慢用測試數據丟棄,這樣的:
ToDoTest>>setUp
savedTasks := Task tasklist.
Task deleteAllTasks.
savedProjects := ToDoProject projectlist.
ToDoProject deleteAllProjects.
savedPeople := Person peoplelist.
Person deleteAllPeople.
和:
ToDoTest>>tearDown
Task tasklist: savedTasks.
ToDoProject projectlist: savedProjects.
Person peoplelist: savedPeople
問題出現在我的測試失敗時,當然他們會這樣做,這會彈出調試器,然後我可以修復,但tearDown並不總是被調用,所以我可能會丟失我的真實數據。
我確實將數據保存到文件中,所以它不是一個大問題,但它並不像我希望的那樣流暢和自動化。
無論如何,我可以改善這一點?
有趣。我認爲以某種方式劃分數據的想法可能對此有所幫助。例如,我的簡單待辦應用程序目前沒有用戶的概念,我可以添加這些應用程序,然後爲單元測試創建一個測試用戶。 – 2013-04-30 10:48:13
有很多方法可以做到這一點。如果你想本地化你的數據,一個簡單的方法就是將事物從類一側移到實例一側。如果ToDoProject是您的主類,則將類方法移到實例端。你會有ToDoProject >>#taskList,ToDoProject >>#projectList,...在第一步中,你可以讓ToDoProject成爲一個單例,這樣ToDoProject類>>#默認會返回ToDoProject實例和你的真實數據。你的海濱組件將有一個instVar「項目」。然後,使用「ToDoProject默認值」配置組件,以便實際使用,並且爲了測試您將「ToDoProject new」 – 2013-04-30 12:41:37