【发布时间】:2010-10-12 10:00:22
【问题描述】:
所以,我正在尝试存根数据库连接器以便为其编写测试。问题是数据库连接器是一个非常薄的层,对它的查询有点开放。我希望我的代码能够从数据库中请求一个变量,并且连接器应该可以接受。此调用的签名如下所示:
dim = getDimension(self,dimensionName,otherIndentifyingInformation)
(这一切都在 MATLAB 中 - 希望答案与语言无关,或者至少在 MATLAB 中并非不可行。)
当我在我的代码中使用它时,dimensionName 是存储在数据库中的少数东西之一。如果代码调用它,但它不存在,那很好。这里的问题是我想测试一些对getDimension 进行两次调用的代码,例如:
alt = conn.getDimension('alt',otherID);
str = conn.getDimension('str',otherID);
出于(希望)显而易见的原因,alt 和 str 不能保证相同。事实上,它们通常不是。
所以,我的问题。如果我想存根 getDimension 以返回良好的测试值,我该怎么做?创建getDimensionAlt 似乎很麻烦,因为可以从数据库中输出的东西的数量是无限的,维护起来会很痛苦。有没有比将逻辑放入我的存根对象更好的方法?这似乎是错误的处理方式......
编辑:建议设置一个 testDB。那么,我不必为每个测试用例设置一个 testDB 吗?在每个测试中,我必须创建一个数据库连接,将其作为存根返回,运行测试,然后清理数据库连接。这似乎对每个测试来说都是很多开销,尤其是当它甚至不是我正在测试的系统时。
我想可以设置一个 testDB,并每次都用适当的值填充它。这是好的做法吗?
编辑 2:也许我的问题不清楚。我有一小段代码正在尝试测试。它并不比上面那两行复杂很多,我想干净利落地测试一下。问题是对getDimension 调用的存根取决于参数。我不需要将此存根用于其他测试。
我认为答案可能是“在你的存根中有简单的逻辑是可以的”。这一切都被 MATLAB 中没有匿名类或存根框架这一事实所迷惑,所以这很难,但我想确保在我开始在 MATLAB 中编写存根框架之前,我正在做的事情在概念上是清晰的。
【问题讨论】:
标签: unit-testing testing matlab tdd stub