gpt4 book ai didi

tdd - 您如何在不平凡的应用程序中进行 TDD?

转载 作者:行者123 更新时间:2023-12-03 20:46:59 25 4
gpt4 key购买 nike

关闭。这个问题是opinion-based .它目前不接受答案。












想改进这个问题?更新问题,以便 editing this post 可以用事实和引用来回答它.

4年前关闭。




Improve this question




我已经阅读了许多关于 TDD 主题的书籍和网站,它们都很有意义,尤其是 Kent Beck 的书。然而,当我尝试自己做 TDD 时,我发现自己盯着键盘想知道如何开始。有你使用的过程吗?你的思考过程是什么?你如何识别你的第一个测试?

大多数关于该主题的书籍都很好地描述了 TDD 是什么,但没有描述如何在现实世界的重要应用程序中实践 TDD。你是怎么做TDD的?

最佳答案

实际上,这比您想象的要容易。您只需在每个单独的类上使用 TDD。您在类里面拥有的每个公共(public)方法都应该针对所有可能的结果进行测试。因此,您看到的“概念证明”TDD 示例也可用于具有数百个类的相对较大的应用程序。

您可以使用的另一种 TDD 策略是通过封装主应用程序行为来模拟应用程序测试运行本身。例如,我编写了一个代表应用程序的框架(用 C++,但这应该适用于任何 OO 语言)。有用于初始化、主运行循环和关闭的抽象类。所以我的 main() 方法看起来像这样:

int main(int argc, char *argv[]) {
int result = 0;

myApp &mw = getApp(); // Singleton method to return main app instance
if(mw.initialize(argc, argv) == kErrorNone) {
result = mw.run();
}

mw.shutdown();
return(result);
}

这样做的好处是双重的。首先,所有主要的应用程序功能都可以编译到一个静态库中,然后链接到测试套件和这个 main.cpp stub 文件。其次,这意味着我可以通过为 argc 和 argv[] 创建数组来模拟主应用程序的整个“运行”,然后模拟 main() 中会发生什么。我们使用这个过程来测试大量现实世界的功能,以确保应用程序在给定输入数据和命令行参数的特定现实世界语料库的情况下准确生成它应该做的事情。

现在,您可能想知道对于具有真正的 GUI、基于 Web 的界面或其他任何东西的应用程序,这将如何改变。对此,我只想说使用模型来测试程序的这些方面。

但简而言之,我的建议归结为:将你的测试用例分解到最小的层次,然后开始向上看。最终,测试套件会将它们全部组合在一起,最终您将获得合理水平的自动化测试覆盖率。

关于tdd - 您如何在不平凡的应用程序中进行 TDD?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/211346/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com