1

我有一个抽象的 Record 类,它代表数据库中的记录。每条记录必须至少具有以下列:id、created、updated。

然后我扩展 Record 类以表示特定表中的行。例如,我有以下扩展 Record 的类:Customer、Job、Location 和 Company。在每一个中,我定义了一个静态“table_name”变量和代表它们的列的静态变量。

我希望能够测试这些类的所有 Record 扩展都应该具有的基本功能。我可以为每个人编写一个测试类来测试这些东西,但我基本上会为 Record 类的每个扩展复制和粘贴这些测试,这似乎不正确。

我考虑过编写一个测试类,并在一个数组中使用这些对象的数据提供程序,但如果测试失败,我不知道哪个对象会导致失败。

必须有一种方法可以拥有某种 TestAllExtensionsOfRecordClass 测试类,然后通过它运行我的对象并能够判断哪个对象导致失败。

建议?

4

1 回答 1

1

许多单元测试框架支持测试类继承——您可以创建一个抽象测试超类,所有派生的测试类将继承并执行其中的所有测试。这允许您在该超类中定义抽象测试用例,也就是契约测试。这些是对您的“基本功能”的测试,无论具体实现如何,这些测试都必须保持不变。因此,在您的情况下,您将拥有一个包含所有基本测试用例和派生 CustomerTest、JobTest 等的抽象 RecordTest,它们将针对自己的实现执行这些测试。

于 2013-04-26T07:49:09.617 回答