gpt4 book ai didi

c++ - 使用 C++ 的 TDD 和内务管理开销

转载 作者:塔克拉玛干 更新时间:2023-11-03 06:58:53 27 4
gpt4 key购买 nike

我做 C++ 代码的测试驱动开发,我觉得尴尬的一件事是我需要为每个类创建很多文件,例如:

iread.hread.hread.cppmockread.hmockread.cpptestread.htestread.cpp

并将它们添加到我项目中的不同文件夹(过滤器)。

因此,我在很大程度上放弃了 bond 和 cpp 文件。然而,这打破了单元测试应该尽可能快地构建的规则。所以如果我只能在其他方面加快发展,我希望停止这样做。

简而言之,当我使用 C++ 进行测试驱动开发时,由于管理开销,我真的很头疼。使用 python 时我没有遇到同样的问题。

我最近所做的一项改进是使用 google mock 并从其界面自动创建模拟。所以这当然是一个改进。

但是我觉得我应该能够通过使用插件来进一步减少开销,这些插件在 tdding 特定类时自动为我需要的所有类创建 stub 。有这样的插件吗?对于Eclipse、VS 2005、VS 2008 和VS 2010 开发这样的插件会不会很困难(抱歉,我时不时要在不同的环境中工作)。

另一个问题是,为了在 Project Explorer(在 VS 中调用)中为给定的被测类查找类(模拟、测试等),我需要进行大量导航。我的一个想法是停止以这种方式在项目资源管理器中对文件进行分组:

+interfaces +namespaceA  iread.h+headers +namespaceA   read.h+source +namespaceA   read.cpp+mocks +namespaceA   mockread.h   mockread.cpp+tests +namespaceA   testread.h   testread.cpp

改为这样做:

 +namespaceA  read.cpp  read.h  readi.h  readmock.cpp  readmock.h  readtest.cpp  readtest.h

这将在解决方案资源管理器中将与特定类关联的文件分组在一起。这是一个好主意吗?你是怎么做的?在 readi.h 文件中有一个 IRead 接口(interface)会很奇怪......Michael Feathers 写道他根本不使用 I 但我更喜欢使用它......我的绝大多数接口(interface)只有一个实现类与他们相关。

您如何在磁盘上组织您的项目?

还有什么建议吗?你也头痛吗?

谢谢,

巴里

最佳答案

不幸的是,对于 C++,“头文件和模块” 不会很快消失。

我对源/模拟/测试文件问题的提示是:

  • 将模拟移到测试文件中 - 毕竟测试是模拟的唯一客户端。
  • 仅使用模块测试文件
    • 我编写了自己的测试框架,只允许 .cpp 文件进行测试。
    • cppUnit 仅在您注册后才允许 .cpp 进行测试。

关于c++ - 使用 C++ 的 TDD 和内务管理开销,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5484335/

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