单元测试代码重复测试,如何管理它们

Unit tests code duplication tests, how manage them

认为我以正确的方式使用 TDD

我有一个 class A​​A​​Test class。我需要 class B 与 class A​​ 几乎相同,我的决定是使用抽象 class - A​​lphabet,并将 A​​B 的公共函数移动到那个 class .在那一刻我没有测试 A​​lphabet 抽象 class 因为我通过 A​​ class 正确测试了所有功能并提升将它们抽象化,一切都很好并且以 TDD 方式工作。但是此时此刻,我的测试不仅涵盖 A​​ A​​Test 中的部分功能,而且还涵盖 A​​lphabet ] 特定的测试用例,我应该在 B class、C、D 等中复制这些用例吗?

在你看来,我应该把那些测试用例放在哪里?

您应该将涵盖 Alphabet 功能的测试移至 AlphabetTest class,并将它们从 ATest 中移除。

我建议您在测试 Alphabet 时创建一个子项并覆盖所有抽象方法虚拟功能。

我对你的问题的解决方案:你实施了一个扩展你的 A​​lphabet 的具体测试class。有了这个 Testingclass,现在您可以编写测试,测试您抽象的显式 class。 一个提示:你的具体测试class应该只在你的测试包结构中可用。

对于你的其他 class,比如 A​​B 等,你现在可以编写测试,测试显式A​​B 等的实现,您不必再显式测试抽象class。

此致 安德烈

将覆盖 Alphabet 代码的测试移动到摘要 class AlphabetTest 中。

现在,ATestBTest(等等)必须扩展 AlphabetTest

运行 测试,您会看到 AlphabetTest 的测试针对 ATestBTest(依此类推)

执行