Ada*_*Fox 4 frameworks unit-testing
我必须开始使用QualityTools.UnitTestFramework为我们开发的Web服务层编写一些单元测试,当我的方法从一开始就看起来不正确时.
似乎单元测试应该能够以任何顺序运行而不依赖于其他测试.
我最初的想法是使用类似于以下测试的东西(简化的示例),它将以相同的顺序作为有序测试运行.
AddObject1SuccessTest
AddObject2WithSameUniqueCodeTest
(依赖于首先创建了object1然后期望失败的第一个测试)
AddObject2SuccessTest
UpdateObject2WithSameUniqueCodeTest
(依赖于先创建了object1的第一个测试,并且thrid测试先创建了object2然后期望失败)
UpdateObject2SuccessTest
GetObjectListTest
DeleteObjectsTest
(使用添加的ID)
但是,测试之间没有状态,并且没有明显的方法将例如添加的ID添加到deletetest中.
那么,那么单元测试复杂交互的正确方法是通过场景吗?
例如
AddObjectSuccessTest
(创建一个对象,获取它以验证数据然后将其删除)
AddObjectWithSameUniqueCodeTest
(创建对象1然后尝试创建具有失败的对象2,然后删除对象1)
UpdateObjectWithSameUniqueCodeTest
(创建对象1然后创建对象2和然后尝试更新对象2以使其具有与失败时对象1相同的唯一代码,然后删除对象1和对象2)
我错了吗?
谢谢
单元测试的宗旨是每个测试用例应独立于任何其他测试用例.MSTest(以及所有其他单元测试框架)通过不保证运行测试的顺序来强制执行此操作 - 某些(xUnit.NET)甚至可以在每次测试运行之间随机化顺序.
建议的最佳做法是将单元简化为简单的交互.虽然不能提供严格的规则,但如果交互过于复杂,则不是单元测试.在任何情况下,复杂的测试都很脆弱并且具有非常高的维护开销,这就是为什么简单的测试是首选的原因.
听起来你的测试之间存在共享状态.这导致相互依赖的测试,应该避免.相反,您可以编写可重用的代码,为每个测试设置前置条件状态,确保此状态始终正确.
这种前置条件状态称为夹具.本书xUnit测试模式包含许多关于如何在许多不同场景中管理灯具的信息和指导.
| 归档时间: |
|
| 查看次数: |
569 次 |
| 最近记录: |