假设我打算在C#中的位图上绘制一些用户提供的文本,我会在前面写什么类型的测试?
这种事情甚至可能吗?在处理数学问题时,BDD似乎非常简单,但我发现在处理自定义UI控件,图形等时,它几乎不可能,而且比它的价值更麻烦。
我能找到的所有TDD示例都使用简单的计算示例,如货币转换或十针保龄球评分,即使是新手也可以轻松使用TDD。我错过了什么吗?
答案 0 :(得分:2)
嗯..我想要一些你想要测试的行为的更具体的例子。
AFAIK,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
接下来,您将上述每个步骤映射到粘合代码 - 该密钥到您的应用代码中
胶水代码是开发人员定义的,并且可以像情况要求一样复杂。同上TDD。
答案 1 :(得分:1)
使用合适的库并不难。查看Approval Tests,了解Java,.net和ruby。 完全披露:它是由我的朋友写的。
通过批准测试,您可以绘制所需的图像,然后要求代码生成匹配的内容。或者 - 只需编写正确的代码,手动接受它生成的图像,然后就是你的测试。强烈推荐,对于这种问题。
答案 2 :(得分:0)
可能,是(请参阅OCR和computer vision)。现实,没有。
(在不久的将来可能会变得可行:Picture driven programming,Project SIKULI)
答案 3 :(得分:0)
如果您希望围绕此进行自动测试,我认为这比它的价值要麻烦得多。在某种程度上,这取决于有关元素在未来可能发生变化的程度。
但是,您可以轻松添加半自动化测试。
在某些测试框架中,您可以使用像[Slow]这样的属性来执行此类测试或者对数据库进行集成测试,这样它们就不会在常见的日常测试运行中运行,而是在更全面的测试运行中运行。 / p>
答案 4 :(得分:0)
正如其他人所说,这真的很难。您真正需要的是GUI单元测试,因此您可以编写如下的BDD测试:
public void can_draw_user_supplied_text_on_bitmap()
{
draw_on_bitmap();
check_bitmap()
}
唯一能够轻松完成此工作的工具是IcuTest 当然,我很偏颇;我写的。如果您对测试版感兴趣,请告诉我。