gpt4 book ai didi

database - 如何测试代码生成工具?

转载 作者:太空狗 更新时间:2023-10-30 01:45:02 25 4
gpt4 key购买 nike

我目前正在开发我的一个小项目,它以动态方式生成 SQL 调用以供其他软件使用。 SQL 调用是事先不知道的,因此我希望能够对生成 SQL 的对象进行单元测试。

您是否知道执行此操作的最佳方法是什么?请记住,不可能知道所有可能生成的 SQL 调用。

目前我唯一的想法是使用正则表达式从数据库创建接受的 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

最佳答案

单元测试的全部意义在于您知道要将代码结果与之进行比较的答案。您必须找到一种方法来事先了解 SQL 调用。

老实说,正如其他回答者所建议的那样,您最好的方法是提出一些预期结果,并在单元测试中对这些结果进行硬编码。然后您可以运行您的代码,获取结果,并与硬编码的预期值进行比较。

也许您可以记录实际生成的 SQL,而不是执行它并比较结果?

关于database - 如何测试代码生成工具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/502684/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com