代码之家  ›  专栏  ›  技术社区  ›  Damien

如何在代码中描述“不简单”行为(BDD)?

  •  1
  • Damien  · 技术社区  · 16 年前

    这种事情可能发生吗?BDD在处理数学问题时似乎非常直截了当,但我发现它几乎是不可能的,而且在处理自定义UI控件、图形等时比它的价值更麻烦。

    5 回复  |  直到 16 年前
        1
  •  2
  •   Gishu    16 年前

    隐马尔可夫模型。。我想要一些你想要测试的行为的更具体的例子。

    好吧,BDD是问题复杂性不可知论者。如果你能用英语向某人解释,你可以写一份BDD 故事

    GIVEN some text entered by the user 'DRAW THIS'
    WHEN I have a bitmap 'c:\temp\SampleImage.bmp'
    THEN the text should be drawn on the bitmap
    

    接下来,您将映射上面的每一个

    • 用户“绘制此”输入的某些文本=>setText('绘制此')
    • 文本应绘制在位图上=>verifyTextOnBitmapInMemory()

        2
  •  1
  •   Carl Manaster    16 年前

    没有那么难,有了正确的图书馆。退房 Approval Tests ,用于Java、.net和ruby。 完全披露:这是我的朋友写的。

    通过批准测试,您可以绘制所需的图像,然后要求代码生成匹配的内容。或者-只需编写正确的代码,手动接受它生成的图像,然后这就是您的测试。强烈推荐,正是针对此类问题。

        3
  •  0
  •   Christian Klauser    16 年前

    OCR computer vision

    (在不久的将来可能变得可行: Picture driven programming , Project SIKULI )

        4
  •  0
  •   Jay    16 年前

    如果你愿意 自动化 围绕这一点的测试,我认为这是比它的价值麻烦得多。在某种程度上,这取决于所讨论的要素在未来会发生多少变化。

    • 弹出“是/否”对话框(通过测试方法启动)-“文本是否正确绘制?”

    在某些测试框架中,您可以使用[Slow]之类的属性来进行此类测试,或者对数据库进行集成测试,这样它们就不会在常见的日常测试运行中运行,而是在更全面的测试运行中运行。

        5
  •  0
  •   Ray    16 年前

    正如其他人提到的,这真的很难。您真正需要的是GUI单元测试,以便编写BDD测试,如:

    public void can_draw_user_supplied_text_on_bitmap()
    {
        draw_on_bitmap();
        check_bitmap()
    }
    

    唯一容易做到这一点的工具是 IcuTest
    当然,我很有偏见;我写的。如果你对测试版感兴趣,请告诉我。