【问题标题】:How to do BDD in a winforms app如何在 Winforms 应用程序中进行 BDD
【发布时间】:2013-12-12 10:52:58
【问题描述】:

我有一个场景,我必须从数据库中获取一些数据并将其显示在 Win 表单应用程序的网格视图中。我已经为 Presenter 编写了一个单元测试来模拟我的存储库和视图。测试检查演示者是否调用了存储库的 GetData() 方法,然后调用了视图的 Bind(data) 方法。

我还对存储库进行了另一个集成测试,以验证数据库中是否有一些数据由存储库返回。

现在是测试我的观点的部分。我想不出办法来测试我的表单并检查它是否确实将数据绑定到网格视图,但这是一个单独的问题。

我的问题是,如果我想以 BDD 样式测试上述场景,那么在 Win 表单中,我无法测试当我调用演示者的方法时是否填充了正确数据的网格视图。这是否意味着我不能在 Win 表单上执行 BDD,因为我无法在不模拟视图的情况下验证完整的行为。如果我们模拟视图,那么 BDD 的整个概念就会丢失,因为参与完成场景的一个关键角色是模拟的,而不是真实的。

这真的让我很困惑,不知道其他人是否曾经有过类似的问题。

【问题讨论】:

    标签: c# winforms unit-testing tdd bdd


    【解决方案1】:

    是的,在创建 winform 应用程序时可以使用 BDD。

    TestStack 有一个名为White 的框架。引用他们的网站:

    White 是一个用于自动化富客户端应用程序的框架,基于 Win32、WinForms、WPF、Silverlight 和 SWT (Java) 平台。它是.NET 基于并且不需要使用任何专有脚本 语言。

    当您使用 C# 时,我也强烈建议您使用 SpecFlow 进行行为驱动开发;它允许您以与技术无关的格式为您的应用程序定义功能和场景,并创建样板代码来帮助您完成 BDD 流程。

    Here 是一篇很好的文章,它通过一个示例使用 Specflow 进行 BDD 和 White 进行 winform 自动化。

    【讨论】:

    • 另外一个用于分享文章,我通常将 MSpec 用于我的 BDD,这对我来说似乎对开发人员更友好,只需要担心代码。个人选择,但您的答案非常适合任何想在 winforms 中使用 BDD 的人。
    • 由于您在问题中没有提到 BBD 框架,我想我会建议 SpecFlow。我来看看 MSpec。
    • @BenSmith "Here" 链接现已失效
    • @Ehouarn 我已将死链接替换为回程机器互联网档案中文章的链接!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-06
    • 2013-05-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多