测试驱动开发:从阿拉伯数字到罗马数字的转换实践
1. 引言
在软件开发中,测试驱动开发(TDD)是一种强大的方法论。它强调先编写测试用例,再实现能使测试通过的代码,最后进行代码重构。我们将通过一个将阿拉伯数字转换为罗马数字的示例来详细探讨 TDD 的实践过程。
2. 第一个测试
首先,我们要确定第一个小需求,即把单个阿拉伯数字 1 转换为罗马数字 “I”。为此,我们将已有的虚拟测试转换为真正的单元测试:
TEST(ArabicToRomanNumeralsConverterTestCase, 1_isConvertedTo_I) { ASSERT_EQ("I", convertArabicNumberToRomanNumeral(1)); }但此时代码无法编译,因为convertArabicNumberToRomanNumeral()函数还未实现。根据 TDD 的规则,我们要编写足够的生产代码使代码能够编译。于是,我们创建了如下函数:
#include <gtest/gtest.h> #include <string> int main(int argc, char** argv) { testing::InitGoogleTest(&argc, argv); return RUN_ALL_TESTS(); } std::string convertArabicNumberToRomanNumeral(cons