【问题标题】:How do specflow features link to unit tests in asp.net webforms projects?specflow 功能如何链接到 asp.net webforms 项目中的单元测试?
【发布时间】:2011-08-24 05:44:33
【问题描述】:

例如,如果我编写 Add A customer 功能,可能会像这样:

场景:添加客户 鉴于我在客户页面上 当我输入登录名时 然后我按添加 我应该会看到新添加的客户确认消息

我开始在 watin 中编写代码以打开浏览器并转到客户页面。 在这一点上不存在。

问题是: 1)然后我是否跳入单元测试并为不存在的页面编写单元测试?在 MVC 中,这将是一个控制器,但在 asp.net webforms 中,它与步骤定义中的测试相同。 2) 单元测试如何与步骤定义相关联?假设在项目结束时,我有大量功能和大量单元测试。然后,如果我查看其中一个功能开始失败,我怎么知道哪些单元测试对应于它?或者这甚至重要吗?

我不确定这是一个最佳实践问题还是人们认为正确的问题。

提前致谢。

【问题讨论】:

    标签: specflow


    【解决方案1】:

    specflow(和 cucumber...)的一个很酷的事情是您可以在任何页面存在之前编写测试。所以我会做的正是你计划做的。

    1) 编写一个规范流测试,描述您希望如何使用该页面。看起来你已经有了。 2) 运行测试。第一行将失败(鉴于我在客户页面上)。

    现在你有一个选择。您是否只想编写启动 watin 并导航到客户页面的代码?好吧,这样做;然后编写客户页面(足以让第一行测试通过)。

    或者,认识到您的测试需要客户页面。这里有很多东西要测试:是否所有的数据字段都存在?页面是否正确进行输入验证?如果我发布到服务器,我会得到正确的响应吗?如果我发布到服务器,数据库是否正确更新?等等。其中一些听起来像单元测试(获取表单数据并将其存储在数据库中的业务逻辑);一些听起来像 UI 测试,对 SpecFlow(页面详细信息、验证)很有用,还有一些听起来像集成测试(可能对 specflow 很好)。

    一旦你写完所有这些并且他们通过了,回到你原来的测试,然后通过第二步(我点击...)

    等等。

    为了回答您的第二个问题,希望您经常运行单元测试和规范流测试,如果测试失败,那是由于您在过去几分钟内所做的事情。找出失败的地方并将其与您刚刚所做的相匹配应该不会太难。

    如果您不经常运行测试,那么您应该这样做。

    【讨论】:

    • 感谢您的回复,开始怀疑是否有人看到我的问题:)。不知道你说的每次我认为我在通过测试方面取得了进展时经常运行测试是什么意思。我应该更频繁地跑步吗?如果你的意思是经常在 CI 服务器上,我们还没有这个设置,所以我不能说,但我想单元测试和 UI 测试是否链接并不重要,因为当测试失败时,它会指向你问题代码不管。真正的问题是其他开发人员如何找到我为特定功能编写的所有单元测试。
    猜你喜欢
    • 2017-08-03
    • 1970-01-01
    • 1970-01-01
    • 2020-03-03
    • 2017-12-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多