例如,如果我编写添加客户功能,可能会这样:
场景:添加客户 鉴于我在客户页面上 当我输入登录名时 然后我按添加 我应该看到新添加的客户确认消息
我开始用watin编写代码来打开浏览器并转到客户页面。 目前还不存在。
问题是: 1)然后我跳进单元测试并为不存在的页面编写单元测试吗?在MVC中,这将是一个控制器,但在asp.net webforms中,它与步骤定义中的测试相同。 2)单元测试如何与步骤定义相结合?让我们说在项目结束时我有一大堆功能和一堆单元测试。然后,如果我查看我将如何知道哪些单元测试对应它,其中一个功能开始失败?或者这甚至重要吗?
我不确定这是一个最佳实践问题,还是人们认为是对的。
提前致谢。
答案 0 :(得分:1)
关于specflow(和黄瓜......)的一个很酷的事情是你可以在任何页面存在之前编写测试。所以我要做的就是你打算做的事。
1)编写specflow测试,描述您希望如何使用页面。看起来你已经有了。 2)运行测试。第一行将失败(鉴于我在客户页面上)。
现在你有了选择。你是否只想编写激活watin并导航到客户页面的代码?好的,那样做;然后编写客户页面(足以让测试的第一行通过)。
或者,确认您的测试需要客户页面。这里有很多要测试:所有数据字段都存在吗?页面是否正确输入验证?如果我发布到服务器,我是否得到正确的答复?如果我发布到服务器,数据库是否正确更新?等等。其中一些听起来像单元测试(业务逻辑采用表单数据并将其存储在数据库中);一些听起来像UI测试,这对SpecFlow(页面细节,验证)和一些听起来像集成测试(可能与specflow很好)的声音很好。
一旦你写了所有这些并且他们通过了,回到原来的测试,并通过第二步(我点击...)
等等。
要回答你的第二个问题,希望你经常运行单元测试和specflow测试,如果测试失败,那是因为你在最后几分钟做了些什么。不应该太难看出失败的原因并将其与你刚才所做的相匹配。
如果您没有经常运行测试,那么您应该是。