TDD结构
TDD(Test-Driven Development,测试驱动开发),核心思想是先写测试,再写代码。
这次我们将通过fizzbuzz这个例子来辅助理解
红绿结构
1.红(red):即编写一个错误的测试用例,先写测试代码,此时由于没有实现对应的功能,测试失败,变为红色。
2.绿(green):即编写一个正确的测试用例,此时实现了对应功能,测试成功,变为绿色。
3.重构(refactor):在不改变代码功能的前提下,优化代码结构,同时保持测试通过。
fizzbuzz函数的编写
头文件
fizzbuzz.h
1 2 3
| #pragma once #include <string> std::string fizzBuzz(int value);
|
cpp文件
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| #include "pch.h" #include <iostream> #include "fizzbuzz.h" #include <string>
using namespace std;
std::string fizzBuzz(int value) { if (value % 3 == 0 && value % 5 == 0) { return "FizzBuzz"; } else if (value % 3 == 0) { return "Fizz"; } else if (value % 5 == 0) { return "Buzz"; } else { return std::to_string(value); } }
int main() { int value; cin >> value; cout << fizzBuzz(value) << endl; return 0; }
|
测试用例的编写
vs2022中的测试管理系统
1.fizzbuzz_test.cpp
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77
| #include "pch.h" #include "fizzbuzz.h" #include "CppUnitTest.h"
using namespace Microsoft::VisualStudio::CppUnitTestFramework;
namespace fizzbuzztest { TEST_CLASS(fizzbuzztest) { public: TEST_METHOD(TestMethod1) { Assert::AreEqual(std::string("1"), fizzBuzz(1)); } TEST_METHOD(TestMethod2) { Assert::AreEqual(std::string("2"), fizzBuzz(2)); } TEST_METHOD(TestMethod3) { Assert::AreEqual(std::string("Fizz"), fizzBuzz(3)); } TEST_METHOD(TestMethod4) { Assert::AreEqual(std::string("4"), fizzBuzz(4)); } TEST_METHOD(TestMethod5) { Assert::AreEqual(std::string("Buzz"), fizzBuzz(5)); } TEST_METHOD(TestMethod6) { Assert::AreEqual(std::string("Fizz"), fizzBuzz(6)); } TEST_METHOD(TestMethod7) { Assert::AreEqual(std::string("7"), fizzBuzz(7)); } TEST_METHOD(TestMethod8) { Assert::AreEqual(std::string("8"), fizzBuzz(8)); } TEST_METHOD(TestMethod9) { Assert::AreEqual(std::string("Fizz"), fizzBuzz(9)); } TEST_METHOD(TestMethod10) { Assert::AreEqual(std::string("Buzz"), fizzBuzz(10)); } TEST_METHOD(TestMethod11) { Assert::AreEqual(std::string("11"), fizzBuzz(11)); } TEST_METHOD(TestMethod12) { Assert::AreEqual(std::string("Fizz"), fizzBuzz(12)); } TEST_METHOD(TestMethod13) { Assert::AreEqual(std::string("13"), fizzBuzz(13)); } TEST_METHOD(TestMethod14) { Assert::AreEqual(std::string("14"), fizzBuzz(14)); } TEST_METHOD(TestMethod15) { Assert::AreEqual(std::string("FizzBuzz"), fizzBuzz(15)); }
}; }
|
2.pch.h
1 2 3 4 5 6
| #ifndef PCH_H #define PCH_H
#endif
|
3.pch.cpp
用例运行
在vs2022页面上面找到测试,点击,出现测试资源管理器,点击,出现一个绿色小三角,点击旁边的白色倒三角,出现运行全部测试用例,接着点击即可。
过一会就会出现测试通过的界面了~
