我目前正在开发一个小项目,以动态方式生成SQL调用,供其他软件使用。由于SQL调用事先不知道,因此我希望能够对生成SQL的对象进行单元测试。您有什么最佳实践建议吗?请注意,无法知道所有可能生成的SQL调用。
目前我唯一想到的方法是使用正则表达式创建接受SQL的测试用例,并确保SQL可以编译,但这并不能确保调用返回预期结果。
编辑:添加更多信息:
我的项目是Boo的扩展,允许开发人员使用一组属性来标记其属性。这些属性用于确定开发人员希望如何在数据库中存储对象。例如:
目前我唯一想到的方法是使用正则表达式创建接受SQL的测试用例,并确保SQL可以编译,但这并不能确保调用返回预期结果。
编辑:添加更多信息:
我的项目是Boo的扩展,允许开发人员使用一组属性来标记其属性。这些属性用于确定开发人员希望如何在数据库中存储对象。例如:
# 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
伟大的想法是生成的代码不需要使用反射机制,而是在编译时添加到类中。编译时间会更长,但根本不需要使用反射。目前,我已经让代码在编译时生成了所需的方法来返回SQL语句,它们被添加到对象中并可以被调用,但我需要测试生成的SQL是否正确 :P