我在尋找一個框架,它允許我使用XML來設置單元測試數據。從XML創建數據庫中的測試數據
我做了很多開發,其中一個Web前端與一個或多個後端數據庫服務器上的多個表連接。爲了進行單元測試,我將數據插入到內存中的HSQLDB表中,並針對此操作運行數據庫操作。它速度很快,並提供了一個相當好的單元測試環境。 Hibernate的工作原理也相當不錯。我只是告訴它,我正在使用HSQLDB方言進行單元測試和生產中的DB2方言,它處理它們之間的差異。
很多時候,我正在使用在SQL廣泛使用之前在生產中使用的遺留表。大量的decimal(7,2)
字段。很多(我的意思是LOTS)複合鍵和索引。我有這種情況,這個表有一個由這兩個字段組成的複合PK,實際上這個字段是FK關閉到另一個表的複合PK,再加上其他一些特定於這個表的字段。我們有decimal(8,0)
字段,它們實際上是YYYYMMDD值。後者實際上是複合PK的一部分。
我不明白這個環境。這些表中的一些已經在生產中使用了數十年。
HSQLDB在所有這些方面運行良好。它可以模擬所有這些東西。我甚至可以創建前面提到的decimal(8,0)
-cum-date字段之一,在該字段中,我將當前日期添加/減去多個日期,並將其轉換爲decimal(8,0)
值。
我這樣做是通過創建多個SQL文件。其中一個包含一個表的create table
語句,另一個包含一串將數據插入該表的insert
語句。 JUnit執行這些來設置上下文,然後根據上下文運行實際的單元測試。任何使用JUnit和Spring的人都可能熟悉這種設置。
問題是我最終不得不在一個文件中硬分配PK值,然後保持與其他文件中記錄的參照完整性。
手動。
保持此狀態令人頭疼。因爲我想添加另一個測試用例或修改現有的測試用例,我已經失去了在多個文件中維護引用的小時數。
我想要一個框架,它可以讀取/解析這些create table
語句,或從創建的表格中提取模式數據,也可以採取一些額外的配置,告訴它表B中的這些字段實際上是FK關閉的複合PK在表A
然後,如果我想創造出具有類似的XML文件:
<table_A field1="value" field2="value" pkField1="value" pkField2="value">
<table_B field1="value" field2="value" pkField3="value" />
<table_B field1="value" field2="value" pkField3="otherValue" timeField="+5 minutes"/>
</table_A>
,並讓它創建表A中的記錄,必要注意的PK值,然後在表B中創建兩個記錄,其中具有適當的FK值,表B中的第二個記錄具有time
場比前一場晚5分鐘。除非我想/不需要,否則我不必在一個表中或另一個表中明確地指定參考字段值。系統可以根據需要自動生成字段,並根據需要將它們轉發到FK。
我希望能夠嵌套任意深度的許多級別。在我的頭頂,我可以圖片:
<table_a ...>
<table_b ... />
<table_b ... />
<table_b ... />
<table_c ... />
<table_c ... />
<table_d ...>
<table_e ...>
<table_f ...>
<table_g ... />
<table_g ... />
<table_h ...>
<table_i ... />
<table_i ... />
</table_h>
</table_f>
</table_e>
</table_d>
</table_a>
在我現有的項目之一。
我想能夠在一個文件中而不是9箇中指定整個數據集。很容易看到什麼數據連接到其他數據。所有這些都被插入適當的表格中,這些表格可能不在同一個DataSource中。
我們曾經在模擬對象上做了很多工作,在單元測試階段用這些對象代替了數據庫操作。當代碼進入動手測試階段並且必須與數據庫交互時,我們遇到了一些問題。人類,模擬物體是不夠的;必須將數據寫入數據庫,系統要確保PK和FK全部相互引用。
這個問題,簡而言之:有誰知道一個框架,使所有上述?包括做日期/時間數學的能力?並轉換爲其他格式?
這看起來可能是一個很好的答案。仍然搞亂它,試圖找出它是否可以做相對的日期/時間和轉換。 – Meower68