6

我正在使用德尔福 7。

我是 DUnit 的新手,我怀疑我可以使用 DUnit 编写什么样的测试用例以及如何编写(这对我来说非常重要)。

是否可以为特定的按钮单击事件编写测试用例?因为在那种情况下,可能会使用大量代码,其中使用各自的数据库相关过程或函数调用更多单元。在这种情况下,编写测试用例的最佳方法是什么?如何编写?(如果可能的话,一个例子或参考将对我有很大的帮助)。

因为,在示例 DUnit 项目中,我们无法编写完整的应用程序代码集,因为在某些情况下可能需要创建其他表单。

所以,我的疑问是在这种情况下如何编写测试用例,通常我们可以使用 DUnit 编写什么类型的测试用例,重要的是如何编写?

4

2 回答 2

17

这应该是评论,但我将其写为答案,因为它不适合评论。

我建议你做两件事:

  • 研究将您的业务逻辑与您的界面分离(重构您的代码)
    通常,您将代码拆分为独立的单元,然后“自下而上”对单元的核心功能进行单元测试。您不会对 GUI 进行单元测试。谷歌例如“单元测试解耦delphi单元”

  • 查看以下链接以获取有关单元测试可以做什么的示例:

http://www.howtodothings.com/computers/a928-automated-testing-with-dunit.html
http://www.nldelphi.com/cgi-bin/articles.exe/ShowArticle?ID=14697
https:// lists.sourceforge.net/lists/listinfo/dunit-interest
http://www.delphi-treff.de/tutorials
http://sourceitsoftware.blogspot.com/2008/10/getting-line-numbers-in-dunit- test.html
http://wiert.me/2010/09/08/delphi-use-tstrings-to-parse-non-standard-separated-strings-and-validate-it-with-dunit-tests/
http:// /delphi.about.com/od/vclusing/a/autotestvcl.htm
http://dunit.sourceforge.net/
http://delphi.about.com/od/toppicks/tp/aatpdebug.htm
http://www .nickhodges.com/post/Delphi-Mocks-The-Basics.aspx
http://www.finalbuilder.com/Resources/Blogs/tabid/458/EntryId/287/Introducing-Delphi-Mocks.aspx
https://github.com/Vsofttechnologies/delphi-mocks
http://www.uweraabe。 de/Blog/2012/03/17/a-dunit-folder-iterator-extension/
Delphi 中的单元测试——你是怎么做的?
http://members.optusnet.com.au/~mcnabp/
http://www.nickhodges.com/post/The-Vocabulary-of-Unit-Testing.aspx
http://hanselminutes.com/169/the-与 roy-osherove 一起进行单元测试的艺术

于 2012-11-23T12:38:08.863 回答
4

通过编写简单的测试来学习单元测试。简单测试适用于您正在构建的可单元测试的类。可单元测试的类不是完整的 Delphi GUI 应用程序。

试试这个作为第一个练习:

  1. 制作一个可以将 1 到 MAXINT 之间的整数分解为素数列表的类,当它们相乘时,得到原始数字。结果应从最小因子到最大因子排序。如果该结果列表的大小为 1,则结果为素数。零和负数会引发异常。

  2. 与其一次性完成所有工作,不如尝试“红/绿”测试驱动开发。这意味着只需编写足够的代码以使第一次测试失败。(编写第一个测试,编写足够的代码以使您正在构建的类编译并运行,但未通过测试。现在使第一个测试通过。不解决整个因式分解数,只需通过第一个测试。)

  3. 重复编写失败测试的过程,然后编写使其通过所需的代码,直到您提供(与您的测试一起)您的类现在可以分解从 1 到 MAXINT 的任何整数值。

当谈到“对现有遗留应用程序进行单元测试”时,您应该查看一本名为“有效地使用遗留代码”的书。我无法向您简要介绍如何开始将单元测试添加到一大堆泥中(您的按钮 OnClick 代码)。

于 2012-11-24T03:20:31.197 回答