以前做單元測試,使用dbunit,但dbunit沒有針對單元測試做太多的東西,雖然靈活,但使用起來不方便,而且也沒有想rails裡面那樣為怎樣在單元測試中準備測試資料提供乙個比較好的規範和約束。使用中還得自己參照rails寫了很多**進行封裝。最近發現乙個開源的框架unitils,乙個對junit的擴充套件框架,其中就包含了對dbunit的封裝。
試用了一下unitls,裡面功能不少。時間關係,還只是主要用了一下我們用得到的一些特性。
以前我們寫單元測試**,除了junit,另外還有用easymock、dbunit、另外還有spring、hibernate等等,用起來很不方便。有了unitls後,感覺寫測試**方便很多(有點寫rails測試**的感覺了,雖然還是有差距,呵呵)。
unitls除了對junit的assert加強外,主要包含以下modules:
• databasemodule: unit-test database maintenance and connection pooling
• dbunitmodule: test data management using dbunit
• easymockmodule: support for creating mocks and lenient reflection argument matching
• injectmodule: support for injecting (mock) objects into other objects
個人感覺比較有用的module是:dbunitmodule、esaymockmodule、injectmodule、springmodule。
dbunitmodule對dbunit進行了封裝,由於unitils大量使用了annotation,和junit4的風格差不多,使用起來很方便。但它的用法是為每個測試類或者測試方法準備乙個dataset檔案,好像還不支援在乙個測試方法前執行多個dataset,開始不太習慣,但用慣了感覺也還不錯。
springmodule可以方便的在測試**中獲取定義在spring中的bean,一起也是自己寫了乙個junit的testcase的基類來初始化,現在可以直接用這個了。
easymockmodule和injectmodule,寫測試**,一直一來比較煩人的就是寫mockobject,本來我就在用easymock,有了這兩個東東,以後寫測試**會稍微輕鬆寫,至少可以少寫幾行了,。
databasemodule感覺基本參照rails框架做的,可以很方便的維護資料庫結構的變動,也許下次新專案可以用這個來維護資料庫指令碼,但原有的專案由於自己已經有一套資料庫指令碼管理的流程,感覺就沒必要改了。
hibernatemodule如果單獨用hibernate的話應該很好用,在通過spring來用hibernate的情況下,應該不需要單獨用。但還沒有看太仔細,裡面有些功能也許用的到。
另外,untils是乙個可擴充套件性非常好的框架,其module是可以自己擴充套件的,以後想自己開發一些工具類擴充套件測試功能的話,都可以基於這個框架做。
Qt在VS中使用單元測試
在工程的解決方案中,新建乙個單元測試專案autotest,qt控制台專案,勾選core,test模組 建立ctest類 include include class ctest public qobject include ctest.h include ctest ctest ctest ctest...
Spring 單元測試中使用 Sql準備資料
在寫單元測試時,往往需要在資料庫中準備對應的測試資料。我們可以在測試用例中,通過 的方式往資料庫中插入資料。但這麼做會使測試 比較臃腫。個人覺得,通過sql指令碼去匯入資料,再結合 transactional註解對資料進行回滾,是一種更好的方案。為此,spring為我們準備了很有用的註解 sql。s...
Google Test單元測試使用
google開源了很多實用的模組,比如google gtest google gmock google glog google gflags google ctemplate google sparsehash protobuf perftools,gtest是c 的測試模組,提供豐富的測試方法 軟...