现今,测试驱动开发是管理大型软件项目的一种简单方法。这是因为TDD允许您在每次更改后确保之前正常工作的一切仍然正常工作,并且如果出现问题,它可以更容易地确定出错的位置。
什么是单元测试?它是应该分析的测试用例的全面清单吗?
单元测试是一段代码,它要求您的代码“单元”执行操作,然后验证操作是否确实执行并且结果符合预期。如果结果不正确,则会引发/记录错误。
所以假设我有一个名为“复数”的类,其中包含一些方法(例如查找共轭,重载赋值运算符和重载乘法运算符)。对于这样的类,应该使用哪些典型的测试用例?是否有选择测试用例的方法学?
理想情况下,您将测试所有代码。
当你创建一个类的实例时,它将以正确的默认值创建。
当你要求它查找共轭时,它会找到正确的共轭(也测试边界情况,如零的共轭)。
当你赋值时,该值被分配并正确显示。
当你将复数乘以一个值时,它会正确地进行乘法运算。
有没有可以为我创建单元测试的框架,还是我必须编写自己的测试类?
请参见
CppUnit。
我在Visual Studio 2008中看到了一个名为“Test”的选项,但从未使其工作过。
不确定。我没有使用VS 2008,但它可能仅适用于.NET。
单元测试的标准是什么?每个类中的每个函数都应该有一个单元测试吗?每个类都有单元测试是否有意义?是的,它有意义。虽然写这么多代码(并且随着每次更改维护)是很繁琐的,但对于大型项目来说,这是值得付出的代价:它保证您对代码库的更改只做您想要的事情,而不会做其他事情。此外,当您进行更改时,需要更新该更改的单元测试(以便它们再次通过)。在TDD中,您首先确定您想让代码做什么(例如,您的复数类),然后编写验证这些操作的测试,然后编写类以使测试正确地编译和执行(没有多余的内容)。这确保您编写尽可能少的代码(并且不会过度复杂化复杂类的设计),还确保您的代码所做的事情。在编写代码结束时,您有一种测试其功能并确保其正确性的方法。您还可以获得使用代码的示例,随时可以访问。
进一步阅读/文献资料,请查看在单元测试和TDD中使用的"依赖注入"和方法存根。