我目前正在開發一個以動態方式生成SQL調用以供其他軟件使用的小型項目。 SQL調用事先不知道,因此我希望能夠對生成SQL的對象進行單元測試。如何測試代碼生成工具?
你有什麼線索可以做到這一點嗎?請記住,沒有辦法知道所有可能的SQL調用。
目前我唯一的想法是使用正則表達式從數據庫創建接受的SQL的測試用例,並確保SQL將編譯,但這並不能確保該調用返回預期的結果。
編輯:添加更多的信息:
我的項目是噓聲的擴展,將允許開發者用一組屬性標記他的財產。這些屬性用於確定開發人員如何將對象存儲在數據庫中。例如:
# This attribute tells the Boo compiler extension that you want to
# store the object in a MySQL db. The boo compiler extension will make sure that you meet
# the requirements
[Storable(MySQL)]
class MyObject():
# Tells the compiler that name is the PK
[PrimaryKey(Size = 25)]
[Property(Name)]
private name as String
[TableColumn(Size = 25)]
[Property(Surname)]
private surname as String
[TableColumn()]
[Property(Age)]
private age as int
好主意是生成的代碼不需要使用反射,但它會在編譯時添加到類中。是的,編譯將花費更長的時間,但根本不需要使用Reflection。我目前有代碼工作生成所需的方法,在編譯時返回SQL,它們被添加到對象,並可以調用,但我需要測試生成的SQL是否正確:P
不幸的是,代碼不能被讀取,因爲它從來沒有被寫入,它在編譯時被添加到boo使用的解析tee中,因此它不能被讀取,因此讀取和獲取審查是不可能的:( – mandel 2009-02-02 12:10:59